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