函数声明
函数声明有两种方式:
- 通过 function 关键字来进行声明
- 通过表达式方式声明
// 通过 function 关键字声明
function sum1(a:number, b:number):number {
return a + b
}
// 通过表达式声明
const sum2 = (a:number, b:number):number => {
return a + b
}
// 如果是表达式形式的,我们给这个变量定义了类型,需要把一个兼容的函数赋值给它
type Sum = (a:number, b:number) => number
const sum3:Sum = (a, b) => {
return a + b
}
可选参数
可选参数必须在其他参数的最后面:
// b? 表示b可以不传
const sum4 = (a: number, b?:number):number => {
// return a + b // Object is possibly 'undefined'
return a + (b as number)
}
默认参数
默认参数可以放到前面也可以放到后面:
type Sum = (a:number, b: number) => number;
const sum: Sum = (a: number = 1, b: number) => a + b;
console.log(sum(1, 2)); // 3
剩余参数
剩余参数必须是最后一个参数才行。
type Sum = (...args:number[])=> number;
const sum: Sum = (...args: number[]) => args.reduce((total, item) => total + item);
console.log(sum(1, 2, 3, 4))
函数重载
function toArray(value:number):number[]
function toArray(value:string):string[]
// semantic error TS2391: Function implementation is missing or not immediately following the declaration.
// let a = 1;
function toArray(value:number|string) {
if (typeof value === 'string') {
return value.split('')
}else {
return value.toString().split('').map(item=>parseInt(item))
}
}
// 根据传入不同类型的数据 返回不同的结果
toArray(123)
toArray('123')