TypeScript Keyof

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

keyof 使用显式 keys

当在具有显式 key 的对象类型上使用时,keyof 会使用这些 key 创建联合类型。

  1. interface Person {
  2. name: string;
  3. age: number;
  4. }
  5. // `keyof Person` 这里创建了 'name' 和 'age' 的联合类型,不允许使用其他字符串
  6. function printPersonProperty(person: Person, property: keyof Person) {
  7. console.log(`Printing person property ${property}: "${person[property]}"`);
  8. }
  9. let person = {
  10. name: "Max",
  11. age: 27
  12. };
  13. printPersonProperty(person, "name"); // 输出 person 的 name 属性: "Max"s

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

  1. type StringMap = { [key: string]: unknown };
  2. // `keyof StringMap` resolves to `string` here
  3. function createStringPair(property: keyof StringMap, value: string): StringMap {
  4. return { [property]: value };
  5. }