Typescriptは推論されたジェネリック型についてはかなり良いです。私は、次のコードを記述している場合たとえば、:反応成分の推定一般型
class AwesomeClass<T> {
constructor(public val: T) {
// ...
}
public getVal(): T {
return this.val;
}
}
const inst = new AwesomeClass("Hello World");
const result = inst.getVal();
result
自動的string
に型付けされます。ニフティ!私はそれをReactを使ってさらに進めたいと思います。私は次のコンポーネント
interface IProps<T> {
value: T;
onClick: (result: T) => void;
}
interface IState { }
class AwesomeComponent<T> extends React.Component<IProps<T>, IState> {
// ...
}
を作る場合は、value
がonClick
のresult
引数と同じ型を持たなければならないことが推測されるように
私は本当に思います。私は
<AwesomeComponent
value="Hello World"
onClick={(v) => { console.log(v); }} />;
でコンポーネントを初期化するとき代わりに、私はコンパイルエラーerror TS2322: Type 'string' is not assignable to type 'T'
を取得します。
React要素の小道具で汎用型を推論することは可能ですか?取引キラーということです -
私はJSXはReact.createElement
への呼び出しにtranspiles(私は上記の私のAwesomeClass
例でやるように、それは直接クラスを初期化しません)、これは、プロセスを複雑にする可能性があるということを認識しますか?その場合は、JSX構文を使用してジェネリック型の名前を明示的に指定できますか?
ニース、それは整理にすでにだ聞いてうれしいです。 –