枚举的字符串可以通过以下方式获取:
enum eURL {
projects
}
let x:string = eURL[eURL.projects]; //x= 'projects'
但是,如果我在下面的示例中使用字符串枚举,那么如何从枚举中获取字符串值“ Help Me”?
enum myEnum {
projects = "Help Me",
}
let x:string = myEnum[myEnum.projects]; // returns undefined.
答案 0 :(得分:2)
答案 1 :(得分:0)
第一个示例起作用而第二个示例不起作用的原因与打字稿如何转换普通枚举vs字符串枚举有关。 正常:
(function (myEnum) {
myEnum[myEnum["projects"] = 0] = "projects";
})(myEnum || (myEnum = {}));
它使用索引作为键,还使用值作为键,并执行从值到索引的映射以及从索引到值的映射,并生成如下所示的对象:
{0: "projects", projects: 0}
字符串:
(function (myEnum) {
myEnum["projects"] = "Help Me";
})(myEnum || (myEnum = {}));
另一方面,字符串枚举仅将键映射为value并产生此值:
{projects: 0}