向我解释 keyof typeof
在 TypeScript 中的含义
例子:
enum ColorsEnum {
white = '#ffffff',
black = '#000000',
}
type Colors = keyof typeof ColorsEnum;
最后一行相当于:
type Colors = "white" | "black"
但它是如何工作的?
我希望 typeof ColorsEnum
返回类似 "Object"
然后 keyof "Object"
不会做任何有趣的事情。但我显然错了。
原文由 user1283776 发布,翻译遵循 CC BY-SA 4.0 许可协议
keyof
接受一个对象类型并返回一个接受任何对象键的类型。typeof 与 TypeScript 类型
typeof
在 javascript 对象上调用时的行为与在打字稿类型上调用时的行为不同。"undefined", "object", "boolean", "number", "bigint", "string", "symbol", "function"
之一因为第二个
typeof preferences
在类型表达式中,它实际上是 TypeScript 自己的typeof
被调用,而不是 JavaScript。类型的键
因为
keyof
是一个 TypeScript 概念,我们将调用 TypeScript 的版本typeof
。keyof typeof
将推断 javascript 对象的类型并返回其键的联合类型。因为它可以推断出键的确切值,所以它可以返回其 文字类型 的联合,而不仅仅是返回“字符串”。