keyof和typeof的区别,连起来用会怎么样

发布时间 2023-12-11 10:43:21作者: 脆皮鸡

keyoftypeof 是 TypeScript 中的两个操作符,它们分别用于从类型中提取键和获取变量的类型。

  • keyof T:用于获取类型 T 的所有键的联合类型。也就是说,keyof T 将返回一个包含类型 T 中所有属性名的联合类型。

  • typeof x:用于获取变量 x 的类型。它会返回变量 x 的类型,包括基本类型、对象类型、函数类型等。

当将它们连起来使用时,可以实现一些有趣的功能。例如:

type Person = {
  name: string;
  age: number;
  gender: 'male' | 'female';
};

const person: Person = {
  name: 'Alice',
  age: 30,
  gender: 'female',
};

type KeysOfPerson = keyof typeof person;
// 等同于 type KeysOfPerson = 'name' | 'age' | 'gender'

const key: KeysOfPerson = 'name'; // 正确
const key2: KeysOfPerson = 'address'; // 错误,因为'address'不是Person类型的键

在这个例子中,我们首先定义了一个 Person 类型,然后创建了一个 person 对象。接着我们使用 typeof person 来获取 person 对象的类型,然后再使用 keyof 来获取该类型的所有键,最终得到一个类型 KeysOfPerson,包含了 Person 类型的所有键的联合类型。

通过将 keyoftypeof 连起来使用,我们能够以一种类型安全的方式获取对象的所有键,并将它们用于类型约束或其他操作中。