TypeScript中如何实现函数重载?
参考答案:
在 TypeScript 中,你可以通过函数重载(Function Overloading)来定义多个同名函数,但每个函数的参数类型或数量不同。这允许你为同一函数提供多种实现方式,根据传入的参数类型或数量来选择不同的实现。
下面是一个使用函数重载的示例:
function combine(value1: number, value2: number): number;
function combine(value1: string, value2: string): string;
function combine(value1: any, value2: any) {
if (typeof value1 === "number" && typeof value2 === "number") {
return value1 + value2;
}
if (typeof value1 === "string" && typeof value2 === "string") {
return value1.concat(value2);
}
return undefined;
}
let result1 = combine(10, 20); // 返回 30
let result2 = combine("Hello, ", "world!"); // 返回 "Hello, world!"
在这个示例中,我们定义了两个 combine
函数的重载。第一个重载接受两个 number
类型的参数,并返回一个 number
类型的值。第二个重载接受两个 string
类型的参数,并返回一个 string
类型的值。
然后,我们定义了一个实际实现的 combine
函数,它接受两个 any
类型的参数。在这个实现中,我们使用 typeof
运算符来检查参数的类型,并根据参数的类型执行不同的操作。
当你调用 combine
函数时,TypeScript 会根据传入的参数类型来选择合适的重载。在这个示例中,第一次调用 combine
函数时,传入了两个 number
类型的参数,所以选择了第一个重载,并返回了一个 number
类型的值。第二次调用 combine
函数时,传入了两个 string
类型的参数,所以选择了第二个重载,并返回了一个 string
类型的值。