如何获取枚举条目的名称?我想迭代一个TypeScript enum类型并获取每个枚举的符号名称,例如:enum myEnum { entry1, entry2 }for (var entry in myEnum) {
// use entry's name here, e.g., "entry1"}
3 回答
哔哔one
TA贡献1854条经验 获得超8个赞
您发布的代码将起作用; 它将打印出枚举的所有成员,包括枚举成员的值。例如,以下代码:
enum myEnum { bar, foo }for (var enumMember in myEnum) { console.log("enum member: ", enumMember);}
将打印以下内容:
Enum member: 0Enum member: 1Enum member: barEnum member: foo
如果您只想要成员名而不是值,则可以执行以下操作:
for (var enumMember in myEnum) { var isValueProperty = parseInt(enumMember, 10) >= 0 if (isValueProperty) { console.log("enum member: ", myEnum[enumMember]); }}
这将打印出名称:
Enum成员:酒吧
Enum成员:foo
警告:这稍微依赖于实现细节:TypeScript将枚举值编译为JS对象,枚举值为对象的成员。如果TS决定将来实施它们不同,上述技术可能会破裂。
慕森王
TA贡献1777条经验 获得超3个赞
假设您遵守规则并仅生成具有数值的枚举,则可以使用此代码。这正确地处理了您的名称恰好是有效数字的情况
enum Color {
Red,
Green,
Blue,
"10" // wat
}
var names: string[] = [];
for(var n in Color) {
if(typeof Color[n] === 'number') names.push(n);
}
console.log(names); // ['Red', 'Green', 'Blue', '10']
添加回答
举报
0/150
提交
取消