Sjekk strengverdi i enum TypeScript
Si at det er en
enum ArrowKey{
Up = "ArrowUp",
Right = "ArrowRight",
Down = "ArrowDown",
Left = "ArrowLeft"
}
Nå, når man mottar en KeyboardEvent med e.key "ArrowUp", hvordan sjekkes det enkelt at denne strengverdien finnes i enumen? Og hvordan velger man riktig enum-verdi etterpå?
Svar #1
Den følgende funksjonen vil returnere enum-verdien som tilsvarer den trykkede piltasten, eller null hvis denne tasten ikke er definert i den enumen.
getEnumValue(event): ArrowKey | null {
const pressedKey = event.key;
const keyEnum = Object.keys(ArrowKey).find(key => ArrowKey[key] === pressedKey);
return ArrowKey[keyEnum] || null;
}
demo: https://stackblitz.com/edit/angular-dmqwyf?embed=1&file=app/app.component.html
REDIGER: ett-linjers ekvivalent (ES 2017)
getEnumValue(event): ArrowKey | null {
return Object.values(ArrowKey).includes(event.key) ? event.key : null;
}
