假设:
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/