为枚举typeScript实现toString

时间:2017-07-04 12:11:06

标签: typescript

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

这是我的枚举:

enum Person{
  FOO = 10,
  FAA = 1,
  FII = 2
}

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

2 个答案:

答案 0 :(得分:3)

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

var Person;
(function (Person) {
    Person[Person["FOO"] = 10] = "FOO";
    Person[Person["FAA"] = 1] = "FAA";
    Person[Person["FII"] = 2] = "FII";
})(Person || (Person = {}));

您会注意到Person.FOO只是一个数字(10是特定的),因此覆盖toString的唯一方法是要求您覆盖它所有数字,你可能不想要那个。

如果您正在寻找枚举的名称(而不是序数),那么您可以这样做:

console.log(Person[Person.FOO]); // "FOO"

答案 1 :(得分:0)

不,不可能。枚举不是可以在JavaScript / TypeScript中扩展的类型。我建议你编写一个简单的方法/函数,它将Person作为参数并做你需要的。