Keyof 类型运算符

keyof 类型运算符

keyof 运算符接收一个对象类型,并生成其键名构成的字符串或数字字面量联合类型。以下类型 Ptype P = "x" | "y" 是相同的类型。

ts
type Point = { x: number; y: number };
type P = keyof Point;
type P = keyof Point
Try

如果该类型具有 stringnumber 索引签名,keyof 则会返回这些类型。

ts
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
Try

请注意,在此示例中,Mstring | number —— 这是因为 JavaScript 对象键名总是被强制转换为字符串,所以 obj[0] 始终等同于 obj["0"]

keyof 类型与映射类型(mapped types)结合使用时会非常有用,我们稍后将详细介绍。

TypeScript 文档是一个开源项目。请通过 发送 Pull Request 来帮助我们改进这些页面 ❤

此页面的贡献者
OTOrta Therox (3)
RMRoman Mahotskyi (1)
MMMasashi Miyazaki (1)
Ssuica (1)

最后更新:2026 年 3 月 27 日