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
Reactjs React.isValidElement(obj)确定obj为React.ReactElement<;{}>;类型_Reactjs_Typescript - Fatal编程技术网

Reactjs React.isValidElement(obj)确定obj为React.ReactElement<;{}>;类型

Reactjs React.isValidElement(obj)确定obj为React.ReactElement<;{}>;类型,reactjs,typescript,Reactjs,Typescript,我有下面的代码 // type def interface Props: { children: React.ReactNode } React.Children.map(this.props.children, child => { // uh-oh! if (React.isValidElement(child) && child.props.children) { // do sth } } 导致typescript错误的原因: 语义错误T

我有下面的代码

// type def
interface Props: { children: React.ReactNode }

React.Children.map(this.props.children, child => {

  // uh-oh!
  if (React.isValidElement(child)  && child.props.children) {
    // do sth
  }
}
导致typescript错误的原因:

语义错误TS2339属性“children”在类型“{}”上不存在

执行前
React.isValidElement
is
React.React节点定义为:

type React.ReactNode = 
  | string 
  | number 
  | boolean 
  | {} 
  | React.ReactElement<any> 
  | React.ReactNodeArray 
  | React.ReactPortal 
  | null 
  | undefined
打字脚本:3.2.0
@类型/反应“^16.3.13”

@类型/react dom“^16.0.5”

如果您知道所需的元素类型,可以将类型参数传递给
react.isValidElement

替换此项:

React.isValidElement(child)
为此:

React.isValidElement<Props>(child)
React.isValidElement(子项)
React.isValidElement<Props>(child)