在TypeScript中将枚举名称获取为字符串

时间:2019-04-08 17:17:48

标签: typescript enums

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

function getMaxMin(){
let min, max=0;
while(true){
let input = parseInt(prompt("Podaj liczbę"));

if(input > max)
  max = input; 
if(!min || (input > 0 && input < min))
  min = input;
  
if(input == 0)
 return `Max = ${max}, Min = ${min}`;
}
}

console.log(getMaxMin())

1 个答案:

答案 0 :(得分: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]);