函数声明
函数声明有两种方式:
- 通过 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) => numberconst 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')
