TypeScriptで子どものタイプを設定できますか?例えばTypescript:React Componentで子どものタイプを設定するには?
私は、このようなコンポーネント
class UserProfile extends React.Component<{ id: number }, void>{
}
class Thumbnail extends React.Component<{ children: UserProfile[] }, void>{
}
class UsersList extends React.Component<void, void>{
public render() {
return (
<div>
<Thumbnail><UserProfile id={1} /></Thumbnail>
<Thumbnail><UserProfile id={2} /></Thumbnail>
</div>
)
}
}
を持っている私は、このような事態を避けるために、サムネイルのコンポーネントでサポートされている特定のものを子供定義したい:
class UsersList extends React.Component<void, void>{
public render() {
return (
<div>
<Thumbnail><UserProfile id={1} /></Thumbnail>
<Thumbnail><UserProfile id={2} /></Thumbnail>
<Thumbnail><span>Some plain text</span></Thumbnail> // This should be forbidden because Thumbnail component expects to have an array of UserProfile elements as it can handle them
</div>
)
}
}
この例では動作しません、それを行う方法はありますか?
私はこれを行う方法を探していましたが、私はできないと思います。 JSXは、コンポーネントクラスの型ではなく、要素を出力します。あなたができることは、レンダリング関数の 'children'を検査し、' type'をチェックし、あなたが望むものでないならばエラーを投げることです。私はこの方法を見つけたが、それは奇妙に見える – Aaron