TypeScript tsxでReactコンポーネントの子を反復処理する方法を教えてください。
以下は有効なjsxです:
public render() {
return (
<div>
{React.Children.map(this.props.children, x => x.props.foo)}
</div>
);
}
ただし、TypeScriptでは、xの型はReact.ReactElement<any>
したがって、私は小道具にアクセスできません。私がやらなければならないキャストの種類はありますか?
型情報が失われるため、any
の使用は通常避けてください。
代わりにReact.ReactElement<P>
関数パラメータタイプ:
React.Children.map(this.props.children, (child: React.ReactElement<ChildPropTypes>) => child.props.bar)
ただし、TypeScriptでは、xの型はReact.ReactElementであるため、小道具にアクセスできません。私がやらなければならないキャストの種類はありますか?
はい。 assertion
という用語もお勧めします。簡単なもの:
React.Children.map(this.props.children, x => (x as any).props.foo)