2017-08-06 10 views
0

は何である私が今までに活字体でいくつかのプロジェクトは、しかし、私は最近、プロジェクトコードを読んだとき、私は以下のようないくつかの宣言を見ました:は、ジェネリック型パラメータの構文(関数型の前で)

export interface SomeInterface<T> { 
    <R>(paths: string[]): Observable<R>; 
    <R>(Fn: (state: T) => R): Observable<R>; 
} 

私は(paths: string[]) : Observable<R>のようなタイプの関数の前に現れる<R>のTSの構文は何か分かりません。誰かがそれについてのアイデアを持っているなら、あなたは私にそれに関する手がかりを与えることができますか?ありがとうございました。

答えて

-1

これは単なる一般的なものです。

関数に置くことは、関数自体にのみ関連し、インターフェイス全体には関連しないことを意味します。

1

その<R>は、基本的には、そのインターフェイスの実装に<R>の汎用メソッドが必要であると言っています。例えば、

<R>(paths: string[]): Observable<R>

ためにそのプロトタイプと一致する有効な方法は次のとおりです。

function foo<R>(paths: string[]): Observable<R> { 
    // function code here 
} 
+0

私は同意するものとします。別の説明は、クラスまたはインターフェースに基づくジェネリック型を使用せずに、関数の戻り値の型(または戻り値の型)を直接選択できることです。 – Wartoshika

+0

ありがとう、David。さらに2つの明確化が必要です。私はそれを投稿しました(https://stackoverflow.com/questions/45551455/does-this-interface-syntax-define-a-function-signature)、明確にするのに役立ちますか? – IcyBrk

関連する問題