Typescriptジェネリックスを使用してインターフェイスを拡張できます。ジェネリックを受け入れるステートレス機能コンポーネントを作成するには?
interface Sample1<P> {
prop1: P;
}
interface Sample2<P> extends Sample1<P> {
prop2: string;
}
しかし、ジェネリックインターフェイスを使用する機能コンポーネントを作成しようとすると、typescriptがエラーをスローします。
const SampleSFC: React.SFC<Sample2<P>> =() => <div />;
エラーTS2304:名 'P' を見つけることができません。
のような既知のタイプにP
を置き換えると、エラーが消えます。代わりに、完全にジェネリック医薬品の目的を殺すP
のハードコーディングタイプの
const SampleSFC: React.SFC<Sample2<string>> =() => <div />;
、私はP
の種類を設定するSampleSFC
のユーザーを有効にしたいです。
どうすればいいですか?それが不可能な場合は、私がそれに従わなければならない代替設計は、私が一般的な小道具でSFCを持つことができるでしょう。
イムどこ 'これは内部にある場合React.SFC'がありますが、さこの構文を使用する関数 'function SampleStateless'があります。 'P'や' string'を 'Sample'インターフェースに渡すのではなく、' T'を渡します。 –
Siggy
ありがとう@シギー。それは関数の中にはありません。 SFCを使用したい他のコンポーネントは、どのようにしてその機能にアクセスしますか?あなたは例を共有していただけますか? –
私は 'SampleSFC 'にある種のタイプ割り当てをしようとしましたが、反応コンポーネントであるため、このコンポーネントはJSXコードの中にあるので、標準構文 'SampleSFC()'では使用できません。私は、あなたが呼び出し側で型を宣言することができないので、ジェネリック型のリアクションコンポーネントを使うことはできないという結論に達しました。 –
Siggy