keyof 类型操作符

类型体操前需要熟悉的知识点

发表于 2024-04-08 15:31:14
更新于 2024-04-18 13:33:37
Typescript

keyof 类型操作符

keyof 类型操作符用于获取对象的所有键,返回一个由对象的键组成的联合类型。下方类型 Ptype P = "x" | "y" 是相同类型。

typescript
type Point = { x: number, y: number };
type P = keyof Point; // 'x' | 'y'

如果类型有一个 stringnumber 索引签名,keyof 会返回这些类型:

typescript
type Arrayish = { [n: number]: unknown };
type A = keyof Arrayish; // number

type Mapish = { [k: string]: unknown };
type M = keyof Mapish; // string | number

在这个例子中,Mstringnumber 的联合类型,因为 JavaScript 对象的键总是字符串,所以 obj[0] 总是和 obj["0""] 是一样的。

keyof 类型和映射类型一起使用时会非常有用。