在TypeScript中将Enum Name作为String获取

问题描述 投票:1回答:1

我正试图找到一种方法将枚举的名称转换为字符串。如果我有下面的响应枚举,如何将“响应”转换或提取到字符串?我的一个函数将任何枚举作为输入,我需要名称,而不是执行其他代码的枚举类型。

enum Response 
{
    No = 0,
    Yes = 1 
}
typescript enums
1个回答
1
投票

不,您不能将枚举名称转换为字符串,因为类型信息仅在编译期间存储。您必须传递额外的参数,指定您使用的枚举。


但您可以使用方括号将枚举值转换为字符串并返回:

Fiddle

enum YesNo {
    No = 0,
    Yes = 1, 
}

console.log(YesNo[YesNo.Yes]);
console.log(YesNo[YesNo.No]);
console.log(YesNo["Yes"]);
console.log(YesNo["No"]);
console.log(YesNo[1]);
console.log(YesNo[0]);

此代码编译为:

var YesNo;
(function (YesNo) {
YesNo[YesNo["No"] = 0] = "No";
YesNo[YesNo["Yes"] = 1] = "Yes";
})(YesNo || (YesNo = {}));
console.log(YesNo[YesNo.Yes]);
console.log(YesNo[YesNo.No]);
console.log(YesNo["Yes"]);
console.log(YesNo["No"]);
console.log(YesNo[1]);
console.log(YesNo[0]);
© www.soinside.com 2019 - 2024. All rights reserved.