乐闻世界logo
搜索文章和话题

TypeScript中的“keyof”运算符是什么?

1 个月前提问
1 个月前修改
浏览次数18

1个答案

1

keyof 是 TypeScript 中的一个类型查询运算符,它可以用于获取某个类型的所有键的联合。这个运算符非常有用,尤其是在你需要根据对象的键来创建类型安全的代码时。

例如,如果我们有一个接口 Person 如下:

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

使用 keyof Person 将会得到一个联合类型 "name" | "age"。这意味着 TypeScript 会将 keyof Person 解析为这两个键的联合。

keyof 的一个常见用途是在函数中,用来指定某些参数只能是某个对象键的一部分。比如,我们可以创建一个函数来获取对象的属性值,同时确保传入的属性名确实是对象中的键:

typescript
function getPropertyValue<T, K extends keyof T>(obj: T, key: K): T[K] { return obj[key]; } const person: Person = { name: "Alice", age: 25 }; const name = getPropertyValue(person, "name"); // 正确 const age = getPropertyValue(person, "age"); // 正确 // const location = getPropertyValue(person, "location"); // 这行会报错,因为 "location" 不是 `Person` 的一个键

在这个例子中,我们定义了一个泛型函数 getPropertyValue,它接受一个对象 obj 和一个键 key。键 key 必须属于对象 obj 的类型的键。这通过泛型约束 K extends keyof T 来实现,确保了类型安全。这种模式在实际开发中非常有用,尤其是当我们需要构建高度可重用且维护性好的库或API时。

2024年8月2日 13:55 回复

你的答案