使用keyof
的参数泛型推断是一种在 TypeScript 中使用泛型推断对象属性的技巧。keyof
是一个索引类型查询操作符,它可以用来获取一个类型的所有属性名组成的联合类型。
具体来说,使用keyof
的参数泛型推断可以用于以下场景:
keyof
,可以获取该对象的所有属性名的联合类型。例如:type Person = {
name: string;
age: number;
};
function getProperty<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}
const person: Person = {
name: "John",
age: 30,
};
const name = getProperty(person, "name"); // 类型推断为 string
const age = getProperty(person, "age"); // 类型推断为 number
keyof
和for...in
循环,可以遍历一个对象的所有属性。例如:type Person = {
name: string;
age: number;
};
function logProperties(obj: Person) {
for (let key in obj) {
console.log(`${key}: ${obj[key]}`);
}
}
const person: Person = {
name: "John",
age: 30,
};
logProperties(person);
// 输出:
// name: John
// age: 30
keyof
限制泛型参数的取值范围,可以确保传入的属性名是对象实际存在的属性。例如:type Person = {
name: string;
age: number;
};
function getProperty<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}
const person: Person = {
name: "John",
age: 30,
};
const address = getProperty(person, "address"); // 错误,"address" 不是 Person 的属性
总结一下,使用keyof
的参数泛型推断是一种利用 TypeScript 的索引类型查询操作符来推断对象属性的技巧。它可以用于访问对象属性、遍历对象属性以及限制泛型参数的取值范围。在实际开发中,可以根据具体需求灵活运用该技巧来提升代码的类型安全性和可读性。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云