目 录CONTENT

文章目录

TS(五)函数类型

TypeScript 函数类型

定义函数类型有三种方式

传统型

function addone(arg1: number, arg2: number): number {
  return arg1 + arg2;
}

console.log(addone(1, 2)); // 3

// 或者

const result: number = (arg1: number, arg2: number) => {
  return arg1 + arg2;
};

接口型

interface addone {
  (arg1: number, arg2: number): number;
}

const addone: addone = (arg1: number, arg2: number) => {
  return arg1 + arg2;
};

使用别名 type

type addone = (arg1: number, arg2: number) => number;

const addone: addone = (arg1: number, arg2: number) => {
  return arg1 + arg2;
};

console.log(addone(1, 2)); // 3

函数参数

可选参数必须要放到最后,通过?来判定

type Add = (x?: number, y: number) => number; // error 必选参数不能位于可选参数后。

type Add2 = (x: number, y?: number) => number; //正确

默认参数

const add = (x: number, y: number = 2) => {
  return x + y;
};

剩余参数 解构

const handleData = (arg1, ...args) => {
  // 这里省略逻辑
  console.log(args);
};
handleData(1, 2, 3, 4, 5); // [ 2, 3, 4, 5 ]
  • 举例
const handleData = (arg1: number, ...args: number[]) => {
  //
};
handleData(1, "a"); // error 类型"string"的参数不能赋给类型"number"的参数

函数重载

函数重载是指在 TypeScript 中定义一个函数时,可以为该函数提供多个不同的签名,每个签名对应不同的参数类型和返回值类型。

function handleData(x: string): string[]; // 这个是重载的一部分,指定当参数类型为string时,返回值为string类型的元素构成的数组
function handleData(x: number): string; // 这个也是重载的一部分,指定当参数类型为number时,返回值类型为string
function handleData(x: any): any {
  // 这个就是重载的内容了,他是实体函数,不算做重载的部分
  if (typeof x === "string") {
    return x.split("");
  } else {
    return x.toString().split("").join("_");
  }
}
handleData("abc").join("_");
handleData(123).join("_"); // error 类型"string"上不存在属性"join"
handleData(false); // error 类型"boolean"的参数不能赋给类型"number"的参数。
0

评论区