2012-11-04 82 views
2

是否存在TypeScript等效的C#的Func關鍵字?命名函數類型

在今天轉換一些現有代碼的TypeScript的初步探索,我使用類/對象的接口,但發現我自己複製函數類型不必要的。我錯過了什麼嗎?

在下文中,我定義爲一個對象類型(數據),並將受益的接口從命名(數據:數據)=>空隙過於

interface Funcs { 
    box: (data: Data) => void; 
    lbl: (data: Data) => void; 
} 

謝謝!

回答

3

函數類型(args) => t只是對象類型{(args): t}的縮寫,所以下面應該工作:

interface Func { 
    (data: Data): void; 
} 

interface Funcs { 
    box: Func; 
    lbl: Func; 
} 
+0

完美。謝謝。 – DazWilkin

0

在C#中,Func需要泛型類型參數。泛型還不是TypeScript語言規範的一部分 - 但它們在路線圖中列出。

說了這話,我不確定你打算如何在這種情況下使用它 - 你是在這之後?

僞代碼:

interface Funcs { 
    box: Action<Data>; 
    lbl: Action<Data>; 
} 

爲了讓您定義短(即我接受類型數據的參數和返回void)。由於沒有返回值,因此我使用Action,但您可以在這裏同樣考慮Func<Data, ResultType>

無論如何,我們將不得不等待泛型,看看它們是如何實現的,以及它們是否允許這種使用。