首页 > 解决方案 > TypeScript 字符串枚举中的反向映射

问题描述

根据文档,TypeScript 字符串枚举不应该进行反向映射。但是当我在 jsfiddle 上运行以下代码时,它可以工作:

enum Person {
 firstName = "First Name",
 lastName = "Last Name",
}

document.querySelector("#app").innerHTML = Person["Last Name"];

演示:https ://jsfiddle.net/u73x80e1/

我错过了什么?

标签: typescriptenumsjsfiddle

解决方案


JSFiddle 似乎使用的是旧版本的 TypeScript。他们正在生成以下JS:

var Person;
(function (Person) {
    Person[Person["firstName"] = "First Name"] = "firstName";
    Person[Person["lastName"] = "Last Name"] = "lastName";
})(Person || (Person = {}));
document.querySelector("#app").innerHTML = Person["Last Name"];

TypeScript Playground上的相同代码为您可以在其中选择的每个版本生成以下内容:

var Person;
(function (Person) {
    Person["firstName"] = "First Name";
    Person["lastName"] = "Last Name";
})(Person || (Person = {}));
document.querySelector("#app").innerHTML = Person["Last Name"];

这似乎是他们 GitHub 上的一个未解决问题:https ://github.com/jsfiddle/jsfiddle-issues/issues/1079 。该线程声明他们正在使用 version 1.7.3


推荐阅读