2015-05-29 217 views
1

在另一個thread我看到這個打字稿說法我不完全理解:未知打字稿構建

export var SuperUser = (id:Number):ISuperUser => { 
     return new SuperUserImpl(id);  
} 

我明白SuperUser是希望它執行括號{...}之間的身體一個id:Number參數的函數。

但我不知道:ISuperUser部件的含義。

這是什麼意思?如何正確讀取此行?

回答

2

總之,這意味着功能返回類型兼容ISuperUser

export var SuperUser = (id: /* parameter type */ Number): /* return type */ ISuperUser => { 
    return new SuperUserImpl(id);  
} 

如果你試圖return 5在函數體中,你會看到一個編譯警告,因爲一個NumberISuperUser兼容。

附加註釋

有時,=>用於聲明的返回類型。這僅在:會導致混淆時纔會使用。例如,在下面的界面中。

代碼:

var example1 = function (param: string): number { 
    return 1; 
} 

interface Example2 { 
    method: (param: string) => number; 
} 

這是一個人爲的例子,因爲你可以更清晰地使用method2(param: string): number;在一個界面中形容 - 但使用內嵌式定義時,你會發現其他類似的例子。如果混淆,編譯器通常會給你一個警告=> expected

+0

啊,我認爲返回類型必須在'=>'後面加以說明。 – Waog

+0

在這種情況下,'=>'是創建函數的lambda。偶爾會看到它被用於類型信息,其中':'會引起混淆。 – Fenton

+0

哦所以'=>'可以有兩個含義? lambda或類型信息?這將澄清很多混亂:) – Waog