簡単な例:
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): エラー TS2605: JSX 要素タイプ 'Element' は、JSX 要素のコンストラクタ関数ではありません。
エラーはコンポーネントの使用法に関するものであることに注意してください(let 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>
);
}
}
タイプスクリプトコンパイラからこのエラーが発生しています:
エラー TS2605: JSX 要素タイプ 'Element' は、JSX 要素のコンストラクター関数ではありません。タイプ 'Element' にプロパティ 'render' がありません。
どうすれば修正できますか?タイプスクリプトでステートレス機能コンポーネントを操作するのに正しいのは何ですか? tsdの最新のreact.d.tsを使用しています