函数重载(Function Overloading)是 TypeScript 中的一个高级特性,它允许开发者为同一个函数名定义多个函数签名。这些函数签名可以有不同的参数类型和返回类型。 在 TypeScript 中,函数重载的基本语法如下:
function functionName(parameter1: type1, parameter2: type2, ...): returnType;
function functionName(parameter1: type3, parameter2: type4, ...): returnType;
// 函数体实现
function functionName(parameter1: any, parameter2: any, ...): any {
// 函数体
}
在这个例子中,我们为同一个 functionName 函数定义了两个重载签名。第一个签名接受 type1 和 type2 类型的参数,第二个签名接受 type3 和 type4 类型的参数。两个签名都返回相同的 returnType 类型。 函数体实现部分是使用 TypeScript 的联合类型语法 parameter1: any, parameter2: any, ... 来定义参数类型。这允许函数接受任意类型的参数,并根据调用时的实际参数类型来确定执行哪个重载签名。 下面是一个具体的例子:
function add(a: number, b: number): number;
function add(a: string, b: string): string;
function add(a: any, b: any): any {
return a + b;
}
console.log(add(1, 2)); // 输出: 3
console.log(add('hello ', 'world')); // 输出: 'hello world'
console.log(add(true, false)); // 输出: 'truefalse'
在这个例子中:
需要注意的是,函数重载的实现部分必须能够处理所有可能的参数类型。如果无法为所有重载签名提供一个通用的实现,就不应该使用函数重载。 总之,函数重载是 TypeScript 中一个强大的特性,可以帮助开发者编写更加灵活和健壮的代码。合理使用函数重载可以提高代码的可读性和可维护性。