2017-01-26 20 views
1

機能に最も近いスタイルでtypescript関数を書き込もうとします。私は書くことができます単純な関数の場合: Typescriptで矢印関数のジェネリック型を作成する方法

type A = (value: number) => string; 
const a: A = value => value.toString(); 

しかし、私は、ジェネリック型で何ができるのでしょうか?どのように私はその簡単な方法で関数に従うことができますか?

function a<T>(value: T): T { 
    return value; 
} 

私は単にジェネリック型を追加しようとすると、それは何も与えない:

type A = <T>(value: T) => T; 
const a: A = value => value; // `value` implicitly has an `any` type 

はそれを行うための方法はありますか?あなたの最後のスニペットで

答えて

3

type A = <T>(value: T) => T; 
const a: A = value => value; 

あなたはaタイプAのですが、あなたはそれがanyを使用する理由は、特定のジェネリック型に結合しないことをコンパイラに伝えます。例えば

、あなたはそうのような一般的なタイプを設定することができます:あなたはaが特定したい場合は

type A<T> = (value: T) => T; 
const a: A<string> = value => value; 

:また、これを行うことができます

const a: A = (value: string) => value; 

を。

あなたはa汎用滞在したい場合は、同様にそれに汎用的な制約を宣言する必要があります:

const a: A = <T>(value: T) => value; 
+0

ので、括弧なしで固有ではない明確なコールバックは右、許可されていませんか? – Lodin

+0

これは許されています、あなたは間違いなく正しいですか? –

+0

これは 'any'の値を除いて、私のtsconfig.jsonでは許可されていません。とにかく、ありがとう、答えは私を助けた。 – Lodin

関連する問題