2016-09-07 5 views
17

Was ist der richtige Weg zum Durchlaufen von Litteralen einer Enum in Typoskript? (Zur Zeit Typescript mit 1.8.1)Typoskript: Wie werden Enumerationswerte für die Anzeige in Optionsfeldern durchlaufen?

ich folgende Enum haben:

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

Das Ergebnis wird angezeigt eine Liste

0 
1 
2 
3 
Intrusion, 
Identification, 
AbsenceTest, 
Autre 

ich nur 4 Iterationen in der Schleife wollen Da es nur 4 Elemente im Enum gibt, möchte ich nicht 0 1 2 und 3 haben, die Indexnummern des Enums zu sein scheinen.

Antwort

45

zwei Optionen:

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

Oder

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

(code in playground)

+0

Es funktioniert nicht, weil 0 1 2 3 Saiten. – abreneliere

+4

Deshalb gibt es einen Haken bei 'isNaN (Number (...))'. Es funktioniert auf dem Spielplatz, den ich geteilt –

+0

Ja, es funktioniert, ich muss etwas verpasst haben. Ich habe bemerkt, dass es die beste Lösung ist, die nicht in der doppelten Frage enthalten ist. – abreneliere

Verwandte Themen