Typescript : how to loop through enum values for display in radio buttons?
本问题已经有最佳答案,请猛点这里访问。
在typescript中,循环访问枚举的Litterals的正确方法是什么?(目前使用的类型为SCRIP 1.8.1)
我有以下枚举:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | export enum MotifIntervention { Intrusion, Identification, AbsenceTest, Autre } export class InterventionDetails implements OnInit { constructor( private interService: InterventionService ) { let i:number = 0; for (let motif in MotifIntervention) { console.log( motif ); } } |
显示的结果是一个列表
1 2 3 4 5 6 7 8 | 0 1 2 3 Intrusion, Identification, AbsenceTest, Autre |
我只希望在循环中进行4次迭代,因为枚举中只有4个元素,我不希望0 1 2和3看起来是枚举的索引号。
两种选择:
1 2 3 4 5 | for (let item in MotifIntervention) { if (isNaN(Number(item))) { console.log(item); } } |
或
1 | Object.keys(MotifIntervention).filter(key => !isNaN(Number(MotifIntervention[key]))); |
(操场代码)
编辑字符串枚举看起来与常规枚举不同,例如:
1 2 3 4 5 | enum MyEnum { A ="a", B ="b", C ="c" } |
编译成:
1 2 3 4 5 6 | var MyEnum; (function (MyEnum) { MyEnum["A"] ="a"; MyEnum["B"] ="b"; MyEnum["C"] ="c"; })(MyEnum || (MyEnum = {})); |
它只是给你这个物体:
1 2 3 4 5 | { A:"a", B:"b", C:"c" } |
您可以按如下方式获取所有密钥(
1 | Object.keys(MyEnum); |
和值(
1 | Object.keys(MyEnum).map(key => MyEnum[key]) |
或使用object.values():
1 | Object.values(MyEnum) |