keyof typeof ab怎么解读呢 ?
export enum ab {
'a',
'b'
}
type uni = keyof typeof ab
keyof typeof ab怎么解读呢 ?
export enum ab {
'a',
'b'
}
type uni = keyof typeof ab
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
TypeScript 中分“类型”和“值”,类型是 TypeScript 认的,一般编译后会消失(不存在于 JS 中)。枚举是比较特殊的定义,虽然定义成类型,但实际是值,它在编译成 JS 之后是一个对象。
TypeScript 中的枚举还分情况,有数值型枚举,也有字符串型枚举,还有混合型的……不讨论复杂了,这里就说数值型的。
你猜
X
是什么呢?你会发现它包含toFixed
和toPrecision
等,是不是感觉像是个 Number 类型的 Key 呢?再来看看 Number 类型的 …… 果然一样
想想,实际上也是,如果这样使用
a
的值实际上是一个 Number(仅数值型枚举的情况)所以 TypeScript 中需要使用
typeof Hello
来取实际的枚举类型(不然就是 Number 的子类型),实际上它是一个接口。这个类型取出来之后,枚举值名称是被当作类型的 Key 的,所以可以用
keyof
把键值取出来。