javascript - map typescript 枚举

标签 javascript typescript enums

我将如何映射 typescript 枚举?例如,对于字符串,您可以这样做:

let arr = [ 'Hello', 'Goodbye' ];

arr.map(v => {
  if (v === 'Hello') {
    return ':)';
  } else if (v === 'Goodbye') {
    return ':(';
  }
); // [ ':)', ':(' ]

当然,这不适用于枚举:

enum MyEnum { Hello, Goodbye };

MyEnum.map(v => {
  if (v === MyEnum.Hello) {
    return ':)';
  } else if (v === MyEnum.Goodbye) {
    return ':(';
  }
}); // does not work

理想情况下,我想以一种通用的方式执行此操作,这样我就可以简单地获取我拥有的任何枚举并将其放入映射函数同时保留类型信息。用法可能看起来像这样:

map(MyEnum, v => {
  if (v === MyEnum.Hello) {
    return ':)';
  } else if (v === MyEnum.Goodbye) {
    return ':(';
  }
}); // [ ':)', ':(' ]

我一直在摆弄一个函数来为我做这件事,但在让泛型恰到好处方面一直遇到问题。

最佳答案

要映射枚举,请执行以下操作:

(Object.keys(MyEnum) as Array<keyof typeof MyEnum>).map((key) => {})

关于javascript - map typescript 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41308123/

相关文章:

javascript - 在换行符处添加字符

reactjs - 在 TypeScript 中使用 React useMemo() 时,无法分配给类型 '() => void' 错误?

javascript - 检查指针是否与 OpenLayers 中的集群子特征相交?

ios - 将枚举案例与参数进行比较

javascript - JS - 给定对象数组,我可以返回刚刚选定的属性的数组吗?

javascript - 禁用手动键盘输入 JavaScript/Oracle JET

javascript - JSON.parse 不适用于有效的 json

javascript - 如何为自定义输入建立 ngModel 双向数据绑定(bind),例如在单选按钮上

c# - 设置由字符串给出的枚举类型的属性

C# @ 在枚举中从 XSD 生成的类