拉莫斯之舞
2019-08-19 10:34:08
如何獲取枚舉條目的名稱?我想迭代一個TypeScript enum類型并獲取每個枚舉的符號名稱,例如:enum myEnum { entry1, entry2 }for (var entry in myEnum) {
// use entry's name here, e.g., "entry1"}
3 回答

嗶嗶one
TA貢獻1854條經(jīng)驗 獲得超8個贊
您發(fā)布的代碼將起作用; 它將打印出枚舉的所有成員,包括枚舉成員的值。例如,以下代碼:
enum myEnum { bar, foo }for (var enumMember in myEnum) { console.log("enum member: ", enumMember);}
將打印以下內(nèi)容:
Enum member: 0Enum member: 1Enum member: barEnum member: foo
如果您只想要成員名而不是值,則可以執(zhí)行以下操作:
for (var enumMember in myEnum) { var isValueProperty = parseInt(enumMember, 10) >= 0 if (isValueProperty) { console.log("enum member: ", myEnum[enumMember]); }}
這將打印出名稱:
Enum成員:酒吧
Enum成員:foo
警告:這稍微依賴于實現(xiàn)細節(jié):TypeScript將枚舉值編譯為JS對象,枚舉值為對象的成員。如果TS決定將來實施它們不同,上述技術(shù)可能會破裂。

慕森王
TA貢獻1777條經(jīng)驗 獲得超3個贊
假設(shè)您遵守規(guī)則并僅生成具有數(shù)值的枚舉,則可以使用此代碼。這正確地處理了您的名稱恰好是有效數(shù)字的情況
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
提交
取消