我正在尝试找到将枚举的名称转换为字符串的方法。如果我有下面的Response枚举,如何将“Response”转换或提取为字符串?我的一个函数将任何枚举作为输入,我需要枚举的名称,而不是枚举的类型来执行其他代码。
enum Response { No = 0, Yes = 1 }
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]);
kupeojn62#
Object.keys({ Response })[0]; // 'Response'
2条答案
按热度按时间fquxozlt1#
不,你不能把枚举名转换成字符串,因为类型信息只在编译时存储。你必须传递额外的参数,指定你使用的枚举。
但是您可以使用方括号将枚举值转换为字符串,然后再转换回来:
小提琴
此代码编译为:
kupeojn62#