TypeScript,“keyof”操作符

本文介绍了TypeScript中的keyof操作符,它用于获取对象类型的所有键的联合类型,以确保编译时的属性名正确性。主要展示了keyof在访问对象属性值和限制函数参数的应用场景,增强了代码的健壮性。
摘要由CSDN通过智能技术生成

keyof 是 TypeScript 中的一个操作符,用于获取对象类型的所有键(属性名)的联合类型。它可以用于在编译时检查对象属性名的正确性,从而提高代码的类型安全性。

以下是一个简单的例子:

interface Person {
  name: string;
  age: number;
  address: string;
}

type PersonKeys = keyof Person;
// PersonKeys 的类型为 "name" | "age" | "address"

在这个例子中,PersonKeyskeyof Person 的结果,它是 "name" | "age" | "address" 类型,表示 Person 接口的所有属性名的联合类型。

keyof 主要有以下应用场景:

1. 访问对象属性值

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

const person: Person = { name: "John", age: 30, address: "123 Main St" };
const nameValue: string = getProperty(person, "name"); // 正确
const ageValue: number = getProperty(person, "age");   // 正确
const invalidValue: boolean = getProperty(person, "invalid"); // 错误,"invalid" 不是 Person 的属性

在这个例子中,getProperty 函数接受一个对象 obj 和一个属性名 key,通过 T[K] 来获取对象的属性值。通过使用 keyof,可以确保传入的属性名是对象实际拥有的属性,避免了拼写错误和使用不存在的属性。

2. 限制函数参数

function printProperty<T, K extends keyof T>(obj: T, key: K): void {
  console.log(obj[key]);
}

printProperty(person, "name"); // 输出: John
printProperty(person, "age");  // 输出: 30
printProperty(person, "invalid"); // 错误,"invalid" 不是 Person 的属性

通过将 key 的类型限制为 keyof T,可以在函数内部安全地访问对象的属性值,而不必担心传入不存在的属性名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值