我想知道是否可以重新定义toString()以获取枚举。
这是我的枚举:
enum Person{
FOO = 10,
FAA = 1,
FII = 2
}
我想重新定义toString,以便在调用Person.FOO.toString()时返回" FOO"。这可能吗?
答案 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作为参数并做你需要的。