声明方式
1. 通过function
2. 通过变量
3. 通过接口
4. 通过类型别名
可选参数: 通过 ? 来声明。
function add5(x: number, y?: number) {
return y? x + y : x;
}
剩余参数
function add6(x: number, ... rest: number[]) {
return x + rest.reduce((pre, cur) => pre + cur)
}
参数默认值:
function add7(x: number, y = 0, z: number, q =1) {
return x + y + z + q;
}
add6(1, undefined, 3) //输出5
x 传值是2,y传值是undefined因为是undefined所以取默认值0,z传值是3,q因为没有传值所以取默认值1。 如果改成console.log(add6(2, 3));此时是不允许的,z需要传值。 总结就是如果函数参数设置了默认值则可以不传或者传undefined都是取默认值,否则需要传值。
注意: 必选参数前面的默认参数是不可省略的,需传入 undefined 来获取它的默认值; 必选参数后面的默认参数是可以省略的。
函数重载
// ts中的函数重载 函数执行时会去查找适合的类型,不合适会继续向下查找如下所示:
function add8(...rest:number[]): number;
function add8(...rest:string[]): string;
function add8(...rest:any[]): any{
let first = rest[0];
if(typeof first === 'string'){
return rest.join('')
}
if(typeof first === 'number'){
return rest.reduce((pre,cur)=> pre + cur)
}
}
console.log(add8(1,2,3)) //输出6
console.log(add8('a','b','c')) //输出abc