2015-09-21 21 views
5

TypescriptはJSX構文をサポートしています。だから私は、伝統的な* .TSファイルで非常によく動作しますが、* .tsxものと全く発現を持っています。Typescript TSXと汎用パラメータ

const f = <T1>(arg1: T1) => <T2>(arg2: T2) => { 
    return { arg1, arg2 }; 
} 

私は不思議それが* .tsxファイル内部の作業を行うようにする方法はありますか?あなたが代わりに関数式を使用することができ

答えて

5

const f = function<T1>(arg1: T1) { 
    return function<T2>(arg2: T2) { 
     return { arg1, arg2 }; 
    }; 
}; 

またはその代わりに、私はこの作品を発見しました:追記オン

const f = <T1, T2>(arg1: T1) => (arg2: T2) => { 
    return { arg1, arg2 }; 
}; 

を、時に罰金コンパイルされているようです複数の汎用パラメータが提供されますが、1つは提供されません。たとえば、ダミーの汎用パラメータを指定すると、次のようになります。

const f = <T1, Dummy>(arg1: T1) => { 
    return { arg1 }; 
}; 

これは間違いなく理想的です。 1つの汎用パラメータでこの作業を行う別の方法があるかもしれませんが、わかりません。

4

これは、あいまいさの問題を解析した結果です。これを明白にする1つのことは、T1に明示的な制約を追加することです。このケースでは、あなたのコードは機能的に同等であるのでT1よう

const f = <T1 extends {}>(arg1: T1) => { 
    return { arg1 }; 
} 

型パラメータは暗黙のうちに、とにかく{}の制約があります。

このソリューションを利用して、元の例の各矢印機能に適用することができます。

関連する問題