TypeScript Keyof

keyof 是 TypeScript 中的一个关键字,用于从对象类型中提取键类型。

具有显式键的 keyof

当用于具有显式键的对象类型时,keyof 使用这些键创建联合类型。

实例

interface Person {  
  name: string;  
  age: number;  
}  
// 这里的 `keyof Person` 创建了一个 "name" 和 "age" 的联合类型,其他字符串将不允许  
function printPersonProperty(person: Person, property: keyof Person) {  
  console.log(`Printing person property ${property}: "${person[property]}"`);  
}  
let person = {  
  name: "Max",  
  age: 27  
};  
printPersonProperty(person, "name"); // 打印人员属性名称: "Max"

亲自试一试

带有索引签名的 keyof

keyof 还可以与索引签名一起使用来提取索引类型。

type StringMap = { [key: string]: unknown };  
// 这里的 'keyof StringMap' 解析为 'string'
function createStringPair(property: keyof StringMap, value: string): StringMap {  
  return { [property]: value };  
}