TypeScript之函數
1.函數聲明
與javascript一樣,ts的函數聲明也分為兩種:函數聲明,函數表達式
1)函數聲明:
function fn(age:number):string{
return `age is ${age}`
}
ps:與javascript類似,只是對參數以及返回值的類型加了限制
2)函數表達式
let fn:(age:number)=>string = function(age:number):string{}
注意:
這里的=>和箭頭函數的符號沒有關系,(**)=>**意思是:這是一個函數類型,括號內說明了參數的個數和類型箭頭后面的說明了返回值的類型。
函數表達式的賦值不是必須的,可以先聲明再賦值,類型說明也可以只寫一邊,另一邊編譯器會自動識別
2.參數相關
在參數后面跟上?表示為可選參數:
function fn( name:string, age?:number ):void{}
注意:可選參數必須在必選參數的后面。
默認參數同es6中的默認參數寫法:
function fn( name:string, age = 18):void{}
注:默認值可不放在最后,但是要想使用默認值,必須在調用的時候在對應位置傳入undefined。
2)剩余參數
function buildName(firstName: string, ...restOfName: string[]) { return firstName + " " + restOfName.join(" "); }
類似es6的...這里也可以用參數末尾的...some string[]數組來收集多余的參數,只不過這里加了類型限定
3.重載
function fn(param: number): number;
function fn(param: string): string;
function fn(param: any): any{};
寫法上,函數頭相同(輸入輸出的類型限定不同),前面的函數只有函數頭,沒有函數體,最后一個函數才聲明函數體,
調用時,輸入的參數類型符合哪個函數頭的類型,函數返回值就會被賦予該函數頭中定義的類型,這樣作可以讓類型檢測更可靠。
注意:之前的所有的函數頭的類型,必須是最后一個函數的類型的子集
4.關于this
并沒有搞明白官方文檔講this是干嘛,沒看懂,暫留

浙公網安備 33010602011771號