3.函数类型

发布时间 2023-12-12 22:12:10作者: 前端自信逐梦者

函数类型

1.函数定义类型和返回值

function fn1():void {}
const fn1 = ():void => {}
function fn2(a: number, b: number): number {
  return a + b;
}
const fn2 = (a: number, b: number): number => {
  return a + b;
}

2.函数默认参数 | 函数可选参数(?)(可选参数必须跟在必须参数后面)| 剩余参数

function fn3(a: number = 20, b?: number): any {
  // return a + b;
  // 注意 可选参数在严格模式下会报错,b未定义
}
function fn4(str: string, ...restOfName: string[]): string {
  return str + restOfName.join('');
}
let returnStr = fn4('hello', ' ', 'world');

3.函数的参数是一个对象

interface useObj {
  name: string;
  age: number;
}
function f4(user: useObj): useObj {
  return user;
}

4. 函数的this类型

// ts中可以定义this的类型,必须是第一个参数定义this的类型
interface group {
  user: number[];
  add: (this: group, num: number) => void;
}
let userobj: group = {
  user: [1, 2, 3],
  add(this: group, num: number) {
    this.user.push(num);
  },
};
userobj.add(4);
console.log(userobj.user);

// 5.函数的重载

let userArr: number[] = [1, 2, 3];
function findNum(ids?: number | number[]): number[] {
  if (Array.isArray(ids)) {
    userArr.push(...ids);
    return userArr;
  } else if (typeof ids == 'number') {
    return userArr.filter((item) => {
      return item == ids;
    });
  } else {
    return userArr;
  }
}