适用范围
场景
- 根据调用函数参数输入的类型不同, 函数返回类型也发生相应改变
- 要求实现函数的逻辑能够同时处理多个输入类型,并返回不同的类型
不适用范围
- 不会根据函数形参来选择不同的函数实现
- js中函数只能实现一次
梗概
- 函数重载允许你为同一个函数定义多个类型签名,然后根据传入参数的类型来选择正确的函数实现。
注意
- 实现签名的函数不可被调用,只能调用重载签名
示例
function example(arg: string): string;
function example(arg: number): number;
function example(arg: string | number): string | number {
if (typeof arg === 'string') {
return 'string';
} else {
return 0;
}
}在上面的代码中,我们定义了一个名为 example 的函数,它有两个重载签名。第一个签名接受一个 string 类型的参数,并返回一个 string 类型的值。第二个签名接受一个 number 类型的参数,并返回一个 number 类型的值。
当我们调用这个函数时,TypeScript 会根据传入参数的类型来选择正确的重载签名,并相应地推断出函数的返回类型。
const result1 = example('hello'); // result1 的类型为 string
const result2 = example(123); // result2 的类型为 number