在TypeScript中获取字符串形式的枚举名称

s3fp2yjn  于 2023-02-25  发布在  TypeScript
关注(0)|答案(2)|浏览(169)

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

enum Response 
{
    No = 0,
    Yes = 1 
}
fquxozlt

fquxozlt1#

不,你不能把枚举名转换成字符串,因为类型信息只在编译时存储。你必须传递额外的参数,指定你使用的枚举。
但是您可以使用方括号将枚举值转换为字符串,然后再转换回来:
小提琴

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]);
kupeojn6

kupeojn62#

Object.keys({ Response })[0]; // 'Response'

相关问题