函数声明

函数声明有两种方式:

  1. 通过 function 关键字来进行声明
  2. 通过表达式方式声明
  1. // 通过 function 关键字声明
  2. function sum1(a:number, b:number):number {
  3. return a + b
  4. }
  5. // 通过表达式声明
  6. const sum2 = (a:number, b:number):number => {
  7. return a + b
  8. }
  9. // 如果是表达式形式的,我们给这个变量定义了类型,需要把一个兼容的函数赋值给它
  10. type Sum = (a:number, b:number) => number
  11. const sum3:Sum = (a, b) => {
  12. return a + b
  13. }

可选参数

可选参数必须在其他参数的最后面:

  1. // b? 表示b可以不传
  2. const sum4 = (a: number, b?:number):number => {
  3. // return a + b // Object is possibly 'undefined'
  4. return a + (b as number)
  5. }

默认参数

默认参数可以放到前面也可以放到后面:

  1. type Sum = (a:number, b: number) => number;
  2. const sum: Sum = (a: number = 1, b: number) => a + b;
  3. console.log(sum(1, 2)); // 3

剩余参数

剩余参数必须是最后一个参数才行。

  1. type Sum = (...args:number[])=> number;
  2. const sum: Sum = (...args: number[]) => args.reduce((total, item) => total + item);
  3. console.log(sum(1, 2, 3, 4))

函数重载

  1. function toArray(value:number):number[]
  2. function toArray(value:string):string[]
  3. // semantic error TS2391: Function implementation is missing or not immediately following the declaration.
  4. // let a = 1;
  5. function toArray(value:number|string) {
  6. if (typeof value === 'string') {
  7. return value.split('')
  8. }else {
  9. return value.toString().split('').map(item=>parseInt(item))
  10. }
  11. }
  12. // 根据传入不同类型的数据 返回不同的结果
  13. toArray(123)
  14. toArray('123')