首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用keyof的参数泛型推断

使用keyof的参数泛型推断是一种在 TypeScript 中使用泛型推断对象属性的技巧。keyof是一个索引类型查询操作符,它可以用来获取一个类型的所有属性名组成的联合类型。

具体来说,使用keyof的参数泛型推断可以用于以下场景:

  1. 访问对象属性:通过将一个对象的属性名作为泛型参数传递给keyof,可以获取该对象的所有属性名的联合类型。例如:
代码语言:txt
复制
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
  1. 遍历对象属性:通过结合keyoffor...in循环,可以遍历一个对象的所有属性。例如:
代码语言:txt
复制
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
  1. 限制泛型参数:通过使用keyof限制泛型参数的取值范围,可以确保传入的属性名是对象实际存在的属性。例如:
代码语言:txt
复制
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 的索引类型查询操作符来推断对象属性的技巧。它可以用于访问对象属性、遍历对象属性以及限制泛型参数的取值范围。在实际开发中,可以根据具体需求灵活运用该技巧来提升代码的类型安全性和可读性。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券