Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 要求组件子级为特定类型_Javascript_Reactjs_Typescript - Fatal编程技术网

Javascript 要求组件子级为特定类型

Javascript 要求组件子级为特定类型,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我有以下组成部分: interface OwnProps { children: React.ReactElement<any>[]; } export class ActionMenuRenderer extends React.Component<OwnProps> { render() { const { children } = this.props; const actions = React.Children.toArray(chil

我有以下组成部分:

interface OwnProps {
  children: React.ReactElement<any>[];
}

export class ActionMenuRenderer extends React.Component<OwnProps> {
  render() {
    const { children } = this.props;
    const actions = React.Children.toArray(children) as React.ReactElement<any>[];

    return (
      ...
    );
  }
}

如何要求组件子级为特定类型?

这在Typescript中目前是不可能的(从3.2开始)。Typescript将生成所有React组件作为通用JSX.Element类型,不幸的是,它将满足您可能尝试限制的任何特定子类型

资料来源:

因此,如果将子类型更改为例如
span
,则不会出现编译错误?@Tholle是否正确。这在Typescript中当前不可能,因为所有React子类型都扩展为JSX。元素:@y2bd:Wow。谢谢你的链接。订阅@y2bd——虽然不令人满意,但这是一个答案。我建议将其作为答案发布。
<ActionMenuRenderer>
  <button type="button">View</button>
  <button type="button">Edit</button>
  <button type="button">Delete</button>
</ActionMenuRenderer>
interface OwnProps {
  children: React.ReactElement<HTMLButtonElement | HTMLAnchorElement>[];
}