简单的例子: import * as React from 'react'declare function getFish(x: any): any;declare var Tank: any;var Aquarium = ({species}) = ( Tank {getFish(species)} /Tank);let x = Aquarium species="rainbowfish"/; 结果: (10,9): error TS26
import * as React from 'react' declare function getFish(x: any): any; declare var Tank: any; var Aquarium = ({species}) => ( <Tank> {getFish(species)} </Tank> ); let x = <Aquarium species="rainbowfish"/>;
结果:
(10,9): error TS2605: JSX element type ‘Element’ is not a constructor function for JSX elements.
请注意,错误与Component的使用有关(让x声明).似乎React的定义文件可能不允许将其作为有效的JSX?我使用tsd的最新React 0.14定义文件,我做错了什么?
假设我已经定义了以下无状态功能组件(React v0.14)
let GreeterComponent = (props: {name: string}){ return <div>Hi {props.name}!</div> }
在另一个组件中,我使用它像这样:
class WrappingComponent extends React.Component{ render(){ let names = ['tom', 'john', 'simon']; return ( <div className="names"> {names.map((name)=> <GreeterComponent name={name} />)} </div> ); } }
我从typescript编译器得到这个错误:
error TS2605: JSX element type ‘Element’ is not a constructor function
for JSX elements. Property ‘render’ is missing in type ‘Element’.
我该如何解决?在打字稿中使用无状态功能组件的正确性是什么?我使用的是最新的react.d.ts来自tsd
定义无状态组件时,它是一个简单而简单的函数.当你实例化它(即将它传递给React.createElement)时,它将被React.StatelessComponent包装.