二.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)