为 enum typeScript 实现 toString

edk*_*ked 1 typescript

我想知道是否可以为枚举重新定义 toString() 。

这是我的枚举:

enum Person{
  FOO = 10,
  FAA = 1,
  FII = 2
}
Run Code Online (Sandbox Code Playgroud)

我想重新定义 toString 以便在调用 Person.FOO.toString() 时返回“FOO”。那可能吗?

Nit*_*mer 5

如果您查看已编译的 javascript 代码:

var Person;
(function (Person) {
    Person[Person["FOO"] = 10] = "FOO";
    Person[Person["FAA"] = 1] = "FAA";
    Person[Person["FII"] = 2] = "FII";
})(Person || (Person = {}));
Run Code Online (Sandbox Code Playgroud)

您会注意到这Person.FOO只是一个数字(10具体而言),因此覆盖toStringfor 它的唯一方法要求您为所有数字覆盖它,而您可能不希望那样。

如果您正在寻找枚举的名称(而不是序数),那么您可以简单地执行以下操作:

console.log(Person[Person.FOO]); // "FOO"
Run Code Online (Sandbox Code Playgroud)