2015-12-02 21 views
-1

所有:函數定義語法打字稿混淆

[更新]我明白這一點:在這麼一週後解釋: In TypeScript how do I declare an array of functions that accept a string and return a string?
事實證明:

函數類型文本的形式

(ParamList)=> ReturnType

i š完全等同於該對象類型字面

{(ParamList):返回類型}

所以,科隆:帶支架{}< =>箭頭=>


我對於Typescript來說很新穎,有一個例子讓我對它的語法感到困惑:

var sayHello: (input: string) : string = function (s: string) { 
    return "Hello " + s; 
} 
var stringUtils: { (input: string): string; }[]; 
stringUtils.push(sayHello); 

任何人都可以幫助給出一點解釋這段代碼做什麼?尤其是第一部分的定義是什麼?

var sayHello: (input: string) : string = function (s: string) { 
    return "Hello " + s; 
} 

這個例子說的sayHello是一個函數的變量,但是當我運行它,我得到了「=>」預期的錯誤,這是否意味着這句法屬於老打字稿,但現在不存在?

感謝

+0

我其實不知道這是有效的TypeScript ...?當我把它粘貼在這裏時,它似乎沒有工作:http://www.typescriptlang.org/Playground – Katana314

+0

@ Katana314謝謝,既不在我身邊,所以基本上它可能是一個錯字? – Kuan

+0

這可能是用意嗎? 'var sayHello:(input:string)=> string = function(s:string){「Hello」+ s; }'。在深入解釋 – Katana314

回答

1

誰能幫忙給一點解釋這段代碼做什麼呢?特別是第一部分的定義做了什麼 var sayHello: (input: string) : string = function (s: string) {

應該是:

var sayHello: (input: string) => string = function (s: string) { 

我們說sayHello是一個函數,將一個字符串返回一個字符串: (input: string) => string。然後我們把它分配給這樣的功能= function (s: string) {

+0

謝謝,我正在閱讀你建議的gitbook。有一件事讓我感到困惑的是接口的定義,我想知道如何用一個字符串參數和返回字符串來定義一個字符串成員和函數成員的接口? – Kuan

+0

我從這篇文章中讀到:http://blogs.msdn.com/b/typescript/archive/2013/01/24/interfaces-walkthrough.aspx當在界面中指定一個函數時,我不知道爲什麼它可以使用這次冒號? (在基本部分中:它使用接口Greetable { greet(message:string):void; } ) – Kuan

+0

@Kuan在此處介紹了區別:http://stackoverflow.com/questions/32043487/difference-between-call - 簽名和功能類型/ 32043715#32043715它只是一個屬性速記 – basarat