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

Relaterte artikler