keyof 类型运算符
keyof 运算符接收一个对象类型,并生成其键名构成的字符串或数字字面量联合类型。以下类型 P 与 type P = "x" | "y" 是相同的类型。
tsTrytypePoint = {x : number;y : number };typeP = keyofPoint ;
如果该类型具有 string 或 number 索引签名,keyof 则会返回这些类型。
tsTrytypeArrayish = { [n : number]: unknown };typeA = keyofArrayish ;typeMapish = { [k : string]: boolean };typeM = keyofMapish ;
请注意,在此示例中,M 是 string | number —— 这是因为 JavaScript 对象键名总是被强制转换为字符串,所以 obj[0] 始终等同于 obj["0"]。
当 keyof 类型与映射类型(mapped types)结合使用时会非常有用,我们稍后将详细介绍。