说有一个

enum ArrowKey{
  Up = "ArrowUp",
  Right = "ArrowRight",
  Down = "ArrowDown",
  Left = "ArrowLeft"
}

现在,当接收带有 KeyboardEvent "ArrowUp"的 e.key 时,如何轻松检查枚举中是否存在此字符串值?之后如何选择正确的枚举值?

最佳答案

以下函数将返回与按下的箭头键对应的枚举值,如果该键未在该枚举中定义,则返回 null。

getEnumValue(event): ArrowKey | null {
  const pressedKey = event.key;
  const keyEnum = Object.keys(ArrowKey).find(key => ArrowKey[key] === pressedKey);
  return ArrowKey[keyEnum] || null;
}

演示:https://stackblitz.com/edit/angular-dmqwyf?embed=1&file=app/app.component.html

编辑 :一行等效(ES 2017)
getEnumValue(event): ArrowKey | null {
  return Object.values(ArrowKey).includes(event.key) ? event.key : null;
}

关于typescript - 检查枚举 TypeScript 中的字符串值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49072376/

10-11 00:11