TypeScript手册——类型操作——keyof 类型操作符(Keyof Type Operator)

42 阅读1分钟

免责声明: 本文为翻译自 TypeScript 官方手册内容,非原创。版权归原作者所有。

原文来源: Keyof Type Operator

翻译者注: 本人在翻译过程中已尽最大努力确保内容的准确性和完整性,但翻译工作难免有疏漏。如读者在阅读中发现任何问题,欢迎提出建议或直接查阅原文以获取最准确的信息。

keyof 类型操作符

keyof 操作符接受一个对象类型,并产生其键的字符串或数值字面量联合。以下类型 P 与类型 P = "x" | "y" 是相同的类型:

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

如果类型具有 stringnumber 索引签名,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

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

当和映射类型结合使用时,keyof 类型变得特别有用,我们稍后会更深入地了解这个问题。