Typescript 函數(shù)
為函數(shù)定義類型
function add(x:number,y:number):number{
return x + y
}
let myAdd = function(x:number,y:number):number{return x + y}
可選參數(shù)和默認(rèn)參數(shù)
-
TS所有寫明的形參都必須傳值载碌,并且不允許多傳怔蚌,但是可以傳入null和undefined
在JS里面勇劣,所有的參數(shù)都是可傳可不傳,不傳就是undefined跋理,但是ts不行,可選參數(shù)需要通過?
標(biāo)識(shí)恬总,并且可選參數(shù)必須在必填參數(shù)后面聲明
TS中的默認(rèn)參數(shù)可以直接在后面添加
=
號(hào)標(biāo)識(shí)前普,并且傳入默認(rèn)值剩余參數(shù):JS中所有的參數(shù)會(huì)存在一個(gè)叫argument的類數(shù)組當(dāng)中,而ts如果傳值的時(shí)候不定義剩余參數(shù)壹堰,那么多傳一個(gè)參數(shù)都會(huì)報(bào)錯(cuò)汁政,實(shí)現(xiàn)是
...
表示,將后面所有剩余參數(shù)接受并且傳入類數(shù)組
this
js中的this發(fā)生在函數(shù)調(diào)用時(shí)缀旁,并指向當(dāng)前的執(zhí)行上下文记劈,但是箭頭函數(shù)的this,會(huì)指向函數(shù)聲明區(qū)域的this上下文
在ts中并巍,this可以當(dāng)作參數(shù)傳入函數(shù)目木,同時(shí)也可以使用類型指定,表示在當(dāng)前函數(shù)內(nèi)部作用域 中所有的this的類型仍然受限制懊渡,避免了this的類型為any的情況
this寫在返回值里面
函數(shù)的重載
在JS中會(huì)通過條件判斷刽射,判斷參數(shù)的類型進(jìn)行不同的邏輯處理,實(shí)現(xiàn)函數(shù)的重載
由于TS是一種強(qiáng)類型的設(shè)計(jì)理念剃执,所以在各種條件判斷之前誓禁,必須多多種情況的函數(shù)條件進(jìn)行多次聲明
function pickCard(x:string):string;
function pickCard(x:number):string;
function pickCard(x:any):string{
if(typeof x =='string'){
return x
}else if (typeof x == 'number'){
return x+''
}
}
這樣實(shí)現(xiàn)會(huì)在函數(shù)調(diào)用時(shí)進(jìn)行嚴(yán)格的類型檢查,同時(shí)通過判斷肾档,走不同的邏輯代碼摹恰,其他類型調(diào)用該函數(shù)將會(huì)報(bào)錯(cuò)