Appearance
keyof 类型操作符
keyof 运算符接收一个对象类型,并产生其键的字符串或数字字面联合。下面的类型 P 与 "x"|"y "是同一类型。
typeScript
type Point = { x: number; y: number };
type P = keyof Point;
const p1:P = 'x'
const p2:P = 'y'
如果该类型有一个字符串或数字索引签名, keyof 将返回这些类型。
typeScript
type Arrayish = { [n: number]: unknown };
type A = keyof Arrayish;
const a:A = 0
type Mapish = { [k: string]: boolean };
type M = keyof Mapish;
const m:M = 'a'
const m2:M = 10
注意,在这个例子中, M 是 string|number ——这是因为 JavaScript 对象的键总是被强制为字符串,所以 obj[0] 总是与 obj["0"] 相同。
keyof 类型在与映射类型结合时变得特别有用,我们将在后面进一步了解。