Hvordan få en type av enum fra en streng i TypeScript?


Jeg har en enum:

export enum Suit {
  SPADES = "SPADES", 
  HEARTS = "HEARTS", 
  DIAMONDS = "DIAMONDS", 
  CLUBS = "CLUBS"
}

Og så når jeg prøver å bruke det:

for(let suit in Suit) {
    console.log(suit);
    console.log(typeof suit);
    const theSuit: Suit = Suit[suit];
}

VS-kode gir kompilasjonsfeil på theSuit sier: Type 'string' kan ikke tilordnes typen 'Suit'.

TypeScript-versjonen er 3.2.2

Hvordan skal jeg få en type Suit fra strengen?

Svar #1

Du kan bruke en typepåstand for å fortelle kompilatoren at suit definitivt vil være en nøkkel i Suit

export enum Suit {
    SPADES = "SPADES", 
    HEARTS = "HEARTS", 
    DIAMONDS = "DIAMONDS", 
    CLUBS = "CLUBS"
}

for(let suit in Suit) {
    console.log(suit);
    console.log(typeof suit);
    const theSuit: Suit = Suit[suit as keyof typeof Suit];
}

Relaterte artikler