サンプルコード
https://codesandbox.io/s/prop-types-ts-zdbnz
(src/Parent.tsx
で型エラーが発生してます)
発生している問題・エラーメッセージ
現在TypeScriptでReactを開発しています。
propsの型チェックは、interfaceだけではなく、prop-typeも使用し行っています。
(interfaceに加えprop-typeを使用することの是非は一旦置かせて頂きます)
その際、自分が作成したcomponentをprop-typesで型指定すると、以下の型エラーが発生します。
型 '{ ({ Child }: PropsWithChildren<ParentProps>): Element; propTypes: { Child: Validator<ReactComponentLike>; }; }' を型 'FunctionComponent<ParentProps>' に割り当てることはできません。 プロパティ 'propTypes' の型に互換性がありません。 型 '{ Child: Validator<ReactComponentLike>; }' を型 'WeakValidationMap<ParentProps>' に割り当てることはできません。 プロパティ 'Child' の型に互換性がありません。 型 'Validator<ReactComponentLike>' を型 'Validator<FunctionComponent<ChildProps>>' に割り当てることはできません。 型 'ReactComponentLike' を型 'FunctionComponent<ChildProps>' に割り当てることはできません。 型 'string' を型 'FunctionComponent<ChildProps>' に割り当てることはできません。 型 '{ Child: Validator<ReactComponentLike>; }' を型 'WeakValidationMap<ParentProps>' に割り当てることはできません。 プロパティ 'Child' の型に互換性がありません。 型 'Validator<ReactComponentLike>' を型 'Validator<FunctionComponent<ChildProps>>' に割り当てることはできません。
恐らく、ParentProps
と、prop-typesのelementTypeが提供している型が異なるためにエラーが発生しているのでは?と推測しています。
この場合、どのような方法を取れば、このエラーは解決できるでしょうか?
また、一般的ではないかもしれませんが、TypeScriptでのReact開発時のprop-types使用でベターな方法をご存知でしたら、そちらも併せて教えて頂けると助かります。
補足情報(FW/ツールのバージョンなど)
- TypeScript@3.3.3
- React@16.8.4
- prop-types@15.7.2
- @types/prop-types@15.7.3
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。