Toc
  1. 函数
    1. 定义函数
    2. 定义函数类型
    3. 函数参数的要求
      1. 参数个数一一对应
      2. 可选参数
      3. 参数默认值
      4. 剩余参数
      5. 函数重载
Toc
0 results found
Ihuzb
TypeScript学习笔记 函数

函数

定义函数

// 函数定义
function add1(x: number, y: number) {
return x + y
}

定义函数类型

// 函数类型的定义,没有具体的实现
let add2: (x: number, y: number) => number

type add3 = (x: number, y: number) => number

interface add4 {
(x: number, y: number): number
}

// add2使用方法
add2 = (x, y) => {
return x + y
};
// 10
console.log(add2(2, 8));

// add3/add4使用方法
let add5: add3 = (x, y) => {
return x + y
}
console.log(add5(2, 8));

函数参数的要求

参数个数一一对应

  • JS中对函数参数的个数是没有要求的。但是在TS中形参和实参必须一一对应。
function add1(x: number, y: number) {
return x + y
}

// 正确使用
console.log(add1(2, 8));
// 错误使用
console.log(add1(2, 8, 9));

可选参数

// y 是可选参数,必选参数不可位于可选参数之后
function add2(x: number, y?: number) {
return y ? x + y : x
}
// 2
console.log(add2(2));

参数默认值

// y参数默认值是3
function add3(x: number, y = 3, z: number) {
return x + y + z
}
// 必选参数前默认参数是不可以省略的,用undefined代替
// 14
console.log(add3(2, undefined, 9));

剩余参数

function add5(x: number, ...result: number[]) {
return x + result.reduce((pre, cru) => pre + cru)
}
// 28
console.log(add5(1, 2, 3, 4, 5, 6, 7))

函数重载

// 这里是声明
function add4(...value: number[]): number
function add4(...value: string[]): string

// 这里是实现
function add4(...value: any[]) {
let first = value[0];
if (typeof first === 'string') {
return value.join(',')
}
if (typeof first === 'number') {
return value.reduce((pre, cur) => pre + cur)
}
}
// 3
console.log(add4(1, 2));
// 1,2
console.log(add4('1', '2'));
本文作者:Ihuzb
版权声明:本文首发于Ihuzb的博客,转载请注明出处!