如果函数定义
四种方式,后三种只是函数类型的定义,并没有具体的实现,真正调用的时候,需要书写这个函数体
function add0(x: number, y: number ) {
return x + y
}
let add11: (x: number, y: number) => number
type add2 = (x: number, y: number) => number
interface add3 {
(x: number, y: number): number
}
// add0(1,2,3) 参数必须对应,否则报错
可选参数
function add5(x: number, y?: number) {
return y? x + y: x;
}
add5(1) //可选参数必须在必须参数之后
默认参数
function add6(x: number, y = 0, z: number, q = 1) {
return x + y + z + q
}
console.log(add6(1,undefined,3))//5 在必须参数之前的默认参数需要用undefined来生效
剩余参数
function add7(x:number, ...rest:number[]) {
return x + rest.reduce((pre, cur) => pre + cur)
}
console.log(add7(1, 2, 3, 4, 5)) //15
函数重载(要把最容易匹配的写在最前面)
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
网友评论