keyof和typeof的区别,连起来用会怎么样
keyof 和 typeof 是 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 类型的所有键的联合类型。
通过将 keyof 和 typeof 连起来使用,我们能够以一种类型安全的方式获取对象的所有键,并将它们用于类型约束或其他操作中。

浙公网安备 33010602011771号