操作符keyof的作用是什么?

本文介绍了TypeScript中的keyof操作符,用于获取对象类型的所有属性名,以及如何在泛型函数和接口中使用它来动态获取和操作属性。通过例子展示了如何避免类型错误,提高代码灵活性和重用性。
摘要由CSDN通过智能技术生成

在 TypeScript 中,keyof 操作符用于获取一个类型的所有属性名组成的联合类型。它可以用来创建泛型函数或接口,用于操作对象的属性名称而不是属性值。

例如,假设我们有一个名为 Person 的接口:

interface Person {
  name: string;
  age: number;
  gender: "male" | "female";
}

如果我们想要定义一个函数,将 Person 对象中某个属性的值取出来,但是我们不想写死这个属性的名称,而是希望能够根据传入的字符串参数动态获取属性名称,那么就可以使用 keyof 操作符来定义泛型类型参数:

function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}

在这个例子中,我们定义了一个泛型函数 getProperty,它接受一个对象 obj 和一个属性名 key,并返回指定属性名的属性值。通过使用 keyof T 来约束类型参数 K,我们限制了 key 参数必须是 T 类型的属性名之一。

我们可以使用这个函数来获取 Person 对象中指定属性的值:

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

getProperty(person, "name"); // "Alice"
getProperty(person, "age"); // 30
getProperty(person, "gender"); // "female"
getProperty(person, "salary"); // Error: 类型“"salary"”的参数不能赋给类型“"name" | "age" | "gender"”的参数

总之,keyof 操作符可以用来获取类型的所有属性名组成的联合类型,而在泛型函数或接口中使用 keyof 操作符可以对属性名称进行操作,从而实现更加灵活和可重用的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值