免责声明: 本文为翻译自 TypeScript 官方手册内容,非原创。版权归原作者所有。
原文来源: Keyof Type Operator
翻译者注: 本人在翻译过程中已尽最大努力确保内容的准确性和完整性,但翻译工作难免有疏漏。如读者在阅读中发现任何问题,欢迎提出建议或直接查阅原文以获取最准确的信息。
keyof
类型操作符
keyof
操作符接受一个对象类型,并产生其键的字符串或数值字面量联合。以下类型 P
与类型 P = "x" | "y"
是相同的类型:
type Point = { x: number; y: number };
type P = keyof Point;
// type P = keyof Point
如果类型具有 string
或 number
索引签名,keyof
将返回这些类型:
type Arrayish = { [n: number]: unknown };
type A = keyof Arrayish;
// type A = number
type Mapish = { [k: string]: boolean };
type M = keyof Mapish;
// type M = string | number
请注意,在此示例中,M
是 string
| number
—— 这是因为 JavaScript 对象的键总是被强制转换为字符串,所以 obj[0]
始终与 obj["0"]
相同。
当和映射类型结合使用时,keyof
类型变得特别有用,我们稍后会更深入地了解这个问题。