web-dev-qa-db-fra.com

Dactylographié: comment parcourir les valeurs enum pour les afficher dans des boutons radio?

Quelle est la bonne façon de parcourir les littéraux d'une énumération dans TypeScript? (Utilise actuellement typographe 1.8.1)

J'ai l'énumération suivante:

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 );
    }
}

Le résultat affiché est une liste

0
1
2
3
Intrusion,
Identification,
AbsenceTest,
Autre

Je ne veux que 4 itérations dans la boucle car il y a seulement 4 éléments dans l'énum, ​​je ne veux pas avoir 0 1 2 et 3 qui semblent être des numéros d'index de l'énum.

113

Deux options:

for (let item in MotifIntervention) {
    if (isNaN(Number(item))) {
        console.log(item);
    }
}

Ou

Object.keys(MotifIntervention).filter(key => !isNaN(Number(MotifIntervention[key])));

( code dans la cour de récréation )


Modifier

Les énumérations de chaînes ont une apparence différente de celles classiques, par exemple:

enum MyEnum {
    A = "a",
    B = "b",
    C = "c"
}

Compile en:

var MyEnum;
(function (MyEnum) {
    MyEnum["A"] = "a";
    MyEnum["B"] = "b";
    MyEnum["C"] = "c";
})(MyEnum || (MyEnum = {}));

Ce qui vous donne juste cet objet:

{
    A: "a",
    B: "b",
    C: "c"
}

Vous pouvez obtenir toutes les clés (["A", "B", "C"]) comme ceci:

Object.keys(MyEnum);

Et les valeurs (["a", "b", "c"]):

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

Ou en utilisant Object.values ​​() :

Object.values(MyEnum)
215
Nitzan Tomer