检查枚举TypeScript中的字符串值

时间:2018-03-02 15:36:44

标签: typescript enums

说有一个

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

现在收到KeyboardEvent e.key" ArrowUp"如何轻松检查枚举中是否存在此字符串值?以及如何在之后选出正确的枚举值?

1 个答案:

答案 0 :(得分:3)

以下函数将返回与按下的箭头键对应的枚举值,如果未在该枚举中定义此键,则返回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;
}