返回

TypeScript 函数类型

前端

在 TypeScript 中,函数类型是一种对函数参数和返回值进行类型化的语法结构。它允许你定义函数的输入和输出,从而提高代码的可读性和可维护性。

函数类型表达式

函数类型表达式是一种定义函数类型的语法。它使用以下语法:

(param1: type1, param2: type2, ...paramN: typeN) => returnType

其中:

  • param1, param2, ... paramN 是函数的参数,每个参数都有一个类型注释。
  • returnType 是函数的返回值类型。

例如,以下函数类型表达式定义了一个接受两个数字并返回一个数字的函数:

(num1: number, num2: number) => number

函数重载

函数重载允许你为同一个函数定义多个具有不同参数或返回值类型的类型。这对于具有不同功能变体的函数非常有用。

例如,以下函数重载定义了一个 sum 函数,它可以接受两个数字或三个数字作为参数,并返回一个数字:

function sum(num1: number, num2: number): number;
function sum(num1: number, num2: number, num3: number): number;

默认参数

默认参数允许你为函数参数指定默认值。这对于可选的参数非常有用,它可以减少调用函数时传递参数的次数。

例如,以下函数定义了一个具有一个默认参数 messagelog 函数:

function log(message: string = "Hello, world!"): void {
  console.log(message);
}

可选参数

可选参数允许你定义函数参数,但它不是必需的。可选参数通常用 ? 符号表示。

例如,以下函数定义了一个具有一个可选参数 optionsinit 函数:

function init(options?: { name: string; age: number }): void {
  console.log(options);
}

函数的兼容性

在 TypeScript 中,函数的兼容性基于它们的类型。如果一个函数的类型与另一个函数的类型兼容,则它可以在需要另一个函数类型的地方使用。

函数类型的兼容性规则如下:

  • 参数数量和类型必须相同或兼容。
  • 返回值类型必须相同或兼容。
  • 默认参数和可选参数必须兼容。

例如,以下函数类型兼容:

(num1: number, num2: number) => number
(num1: number, num2?: number) => number

因为它们具有相同数量和类型的参数,并且返回值类型相同。

**