在Typescript中重载静态类的静态方法

esyap4oy  于 2023-02-10  发布在  TypeScript
关注(0)|答案(1)|浏览(173)

我有一个typescript静态类,在这里我将密钥对值转换为字符串。密钥对值可以有布尔值、数字值、字符串值,但最后我希望它们都转换为字符串(每个都有我指定的实现)。

[{ key: "key1", value: false },
 { key: "key2", value: "sample string"},
 { key: "key3", value: 55}]

这是我目前所拥有的。但是它给了我重复的函数实现。我想要这个密钥对转换器类,这样我就可以循环遍历我的列表,而不管值的类型。

export abstract class KeyPair {
  public static toString(val: boolean): string {
    return (+val).toString();
  }

  public static toString(val: string): string {
    return val;
  }

  public static toString(val: number): string {
    return ""+val;
  }
}
hc2pp10m

hc2pp10m1#

由于TypeScript只是JavaScript的一部分,因此没有其他语言中常见的重载(只有重载 * signature *)。
您需要一个能够接受这三种类型的并集并在内部执行正确操作的函数。

export abstract class KeyPair {
  public static toString(val: boolean | string | number): string {
    if (typeof val === "boolean") return (+val).toString();
    if (typeof val === "string") return val;
    if (typeof val === "number") return String(val);
    throw new Error(`Can't convert ${val}`);
  }
}

相关问题