typescript - 检查枚举 TypeScript 中的字符串值

标签 typescript enums

假设有一个

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

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

最佳答案

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

相关文章:

reactjs - 功能组件中的接口(interface) props

javascript - 无需编译的 TypeScript 输出文件

c++ - 我可以强制初始化枚举类类/函数模板的所有可能枚举值吗?

java - Java 中具有负值/间隙值的枚举

ios - typedef 行 : 上的“预期标识符”错误

javascript - TS2339 : Property 'includes' does not exist on type 'string'

reactjs - 通用 Typescript 类型 + React hook

angular - 我应该将什么样的对象传递给 `FormBuilder.group()` 才能正确实例化字段?

enums - Kotlin:如何使用扩展函数扩展枚举类

c# - 如何获得复杂的枚举值字符串表示