二.ts函數定義
1.函數聲明法:
funtion a():number{ return 123 } funtion a():string{ return '123' } funtion a():boolean{ return true } funtion a():void{ }
funtion a():boolean{
return 123 //報錯 類型和返回不一樣 }
2.匿名函數法:
var a = function():number{ return 123 }
3.定義方法傳參
function a(str:string,num:number):string{ return `${str} --- ${num}` }
a('我今年',20) //我今年 --- 20
4.可選參數法:參數可傳可不傳,注意可選參數最好放在最后面
function a(str:string,num?:number):string{ if(num){ return `${str} --- ${num}` }else { return `${str} --- 無num` } }
a('我今年',20) //我今年 --- 20
a('我今年') //我今年 --- 無num
5.默認參數
function a(str:string,num:number = 20):string{ return `${str} --- ${num}` } a('我今年') //我今年 --- 20
a('我今年',30) //我今年 --- 30
6.剩余參數:不確定傳多少個參數
function sum1(a:number,b:number,c:number,c:number):number{ return a+b+c+d } sum1(1,2,3,4) //10 function sum(...all:number[]):number{ let su = 0; for(let i = 0;a<all.length;a++){ su+=all[i] } return su } function sum(a...all:number[]):number{ let su = a; for(let i = 0;i<all.length;i++){ su+=all[i] } return su }
7.函數重載:通過為同一個函數提供多個函數類型定義來實現多個功能的目的
function c(name:string):string; function c(age:number):number; function c(s:any):any{ if(typeof s === string){ return `1 --- ${s}` }else{ return `2 --- ${s}`
}
};
c(333) // 2 --- 333
c('q') // 1 --- q c(true) // 報錯
說明:c函數雖然是any類型,但是上面c定義了string和number,就不能完全為any類型,只能是定義好的類型
8.箭頭函數: this指向上下文
setTimeout(()=>{ console.log('run') },1000)