关于javascript:typescript:如何循环枚举值以在单选按钮中显示?

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"
}

您可以按如下方式获取所有密钥(["A","B","C"]

1
Object.keys(MyEnum);

和值(["A","B","C"]):

1
Object.keys(MyEnum).map(key => MyEnum[key])

或使用object.values():

1
Object.values(MyEnum)