typescript - 将枚举转换为自定义文字数组

标签 typescript enums

假设:

export enum Day {
  Monday = 111,
  Tuesday = 222,
  Wednesday = 333,
  Thursday = 444,
  Friday = 555,
  Saturday = 666,
  Sunday = 777,
}

Object.values(Day)
  .filter(v => typeof v === 'number') // or filter(Number)
  .map(numeric => console.log('numeric', numeric))
  // more code to come

我正在尝试从枚举构建自定义对象数组,例如 { id: 111, label: 'Monday' } 并且我正在努力处理类型。

当鼠标悬停在numeric上时,我希望类型为number,或者可能是Day,但从未与|联合string,因为我正在过滤掉它之前的字符串。

这是为什么?

最佳答案

如果您希望 typescript 推断numeric的实际类型,则可以在map之前使用类型保护,例如

function isNumber(v: unknown): v is number {
  return typeof v === 'number'
}
Object.values(Day)
  .filter(isNumber) // or filter(Number)
  .map(numeric => console.log('numeric', numeric)) // numeric is number

关于typescript - 将枚举转换为自定义文字数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70910031/

相关文章:

reactjs - 如何在 React 和 Typescript 中使用情感/风格

reactjs - react typescript : Correct type for useLocation() from react-router-dom

iphone - iOS 6.1 和 Xcode 4.6,枚举警告 UIView 动画曲线 EaseOut

c# - 根据 FXCop 的 CA1008 规则,枚举应具有默认值零。这适用于 C# 吗?

java - 在 Java 运行时在两个枚举类之间切换

javascript - ng-required,如何在输入之间使用它?

typescript - 如何在 Type Script 中导入 CSV 文件和文本文件

TypeScript 问题 - TypeError : Cannot read property 'watchRun' of undefined

java - 枚举继承,或类似的东西

c# - 根据数据库查找表中的值自动创建枚举?