2017-08-06 84 views
0

我做過的打字稿一些項目,但是當我最近看了一個項目的代碼,我看到了一些聲明,如下圖所示:什麼是語法泛型類型參數(在函數類型前)

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

我不確定在<R>的TS中是什麼語法,它出現在函數前面,例如:(paths: string[]) : Observable<R>。如果任何人有關於它的想法,你能否給我一些線索。謝謝。

回答

-1

這只是通用的。

把它放在函數上意味着它只與函數本身有關,而不是整個接口。

1

<R>基本上是說該接口的實現必須具有<R>的通用方法。例如,對於

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

是該原型相匹配的有效方法是:

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

我同意。另一種解釋是用戶可以直接選擇函數的返回類型(或返回類型轉換),而不使用基於類或接口的泛型類型。 – Wartoshika

+0

謝謝大衛。兩個解釋我需要另外,我張貼它(https://stackoverflow.com/questions/45551455/does-this-interface-syntax-define-a-function-signature),你會幫助澄清。 – IcyBrk

相關問題