export enum TaskType { FrontEnd, BackEnd, Designer };
FrontEnd, BackEnd, Designer, 0, 1, 2
constructor(e?: Object) {
var template = this.FormTemplate;
$(e).append(template);
var sel = template.find('select');
/*$.each(TaskType, function (index, el) {
sel.append("<option value='" + index + "'>" + el + "</option>");
});*/
for(var i=0; i < (typeof TaskType).length; i++){
sel.append("<option value='" + TaskType[i] + "'>" + TaskType[i] + "</option>");
}
}
有人能告诉我这是为什么吗?
当编译为普通JS时,TypeScript枚举包含符号名称和数值作为属性,这解释了为什么在尝试枚举对象的属性时会获得fonten、BackEnd、Designer、0、1、2
。据我所知,没有编译后的方法只枚举符号名称。您可以枚举所有它们,并跳过任何数字。
从本文中,您可以确切地看到TypeScript枚举是如何编译成JS的。
如果你有这份打字稿:
//TypeScript declaration:
enum StandardEnum {FirstItem, SecondItem, ThirdItem};
//Compiled javascript:
var StandardEnum;
(function (StandardEnum) {
StandardEnum[StandardEnum["FirstItem"] = 0] = "FirstItem";
StandardEnum[StandardEnum["SecondItem"] = 1] = "SecondItem";
StandardEnum[StandardEnum["ThirdItem"] = 2] = "ThirdItem";
})(StandardEnum || (StandardEnum = {}));
;
var StandardEnum = {
"FirstItem": 0,
"SecondItem": 1,
"ThirdItem": 2,
"0": "FirstItem",
"1": "SecondItem",
"2": "ThirdItem"
};
你可以这样做:
for (var item in StandardEnum) {
if (StandardEnum.hasOwnProperty(item) && !/^\d+$/.test(item)) {
console.log(item);
}
}
工作演示:http://jsfiddle.net/jfriend00/65cfg88u/
仅供参考,如果你真正想要的是:
var StandardEnum = {
"FirstItem": 0,
"SecondItem": 1,
"ThirdItem": 2
};
本节介绍枚举类型的定义及其使用,需要定义一组相同主题的常量数据时,应该立即想到枚举类型。在学习过程中,需要注意枚举类型的正向映射和反向映射,可以通过编译后的 JavaScript 源码进行分析,为什么可以进行反向映射。 1. 慕课解释 使用枚举我们可以定义一些带名字的常量。TypeScript 支持数字的和基于字符串的枚举。 2. 定义及使用场景 枚举类型弥补了 JavaScript 的设计不足,
有没有更好的办法解决这个问题?
因此,进一步寻找,我发现这个人有一个解决方案:typescript中基于字符串的枚举的解决方案 这将允许像这样的东西工作: 唯一的回应基本上是说这样做是不安全的。(但我应该说,它确实起作用了--我可以键入eventtype.dot...Atom editor给了我5个大小写选项可供选择(保持代码中的内容一致),然后我可以使用它将字符串值吐出来,给我的用户一个很好的填充空间的体验,将来我可以更改枚举
在typescript中枚举的用途是什么。如果它的目的仅仅是使代码可编辑,我们就不能使用常量来达到同样的目的吗 如果没有打字检查的好处,就不能写成。
我的Flutter项目中有一个Dart枚举,如下所示: 如果我有一些随机枚举状态,如,我如何迭代到下一个枚举(而不需要做一些事情,如用开关语句映射它们)? 我在这个,这个和这个的帮助下找到了答案,所以我把它贴在下面。