TypeScript 方法重载

通过方法重载实现函数的多种参数类型和返回值

问题

如何在 TypeScript 中实现方法重载?

解答

方法重载允许函数根据不同的参数类型或数量,提供不同的类型定义和行为。它通过定义多个函数签名和一个实现函数来实现。

基本语法

function greet(name: string): string;
function greet(age: number): string;
function greet(value: string | number): string {
  if (typeof value === "string") {
    return `Hello, ${value}!`;
  } else {
    return `You are ${value} years old!`;
  }
}

console.log(greet("Lydia")); // Output: "Hello, Lydia!"
console.log(greet(30)); // Output: "You are 30 years old!"

实现步骤

首先定义多个重载签名,每个签名指定不同的参数类型和返回类型。然后定义一个实现函数,其参数类型需要兼容所有重载签名,函数体内通过类型判断处理不同情况。

注意实现函数的签名不会出现在类型提示中,只有重载签名会被外部调用者看到。

关键点

  • 重载签名定义函数的多种调用方式,实现函数处理具体逻辑
  • 实现函数的参数类型必须兼容所有重载签名
  • 提供更严格的类型检查和更好的类型推断
  • 调用时 TypeScript 会根据参数类型匹配对应的重载签名