TypeScript中`keyof`的对应`valueof`:如何获取对象值的类型?
大家好!我最近开始学习TypeScript,遇到了一个有趣的问题。我们都知道`keyof`——当需要获取对象键的联合类型时,它工作得很好。例如:
```typescript
interface User {
name: string;
age: number;
email: string;
}
type UserKeys = keyof User; // "name" | "age" | "email"
```
但我需要相反的操作——获取对象*值类型*的联合类型。也就是说,对于`User`接口,我想获得类型`string | number`,而不是`"name" | "age" | "email"`。
我尝试过写类似`valueof`的东西,但TypeScript报错了。我在Stack Overflow上搜索了一下,找到了类似的问题,但答案都是英文的,我没完全搞懂。
具体问题:我有一个配置对象,包含不同类型的字段(字符串、数字、布尔值)。我需要编写一个函数,它接受该对象的任意键并返回正确类型的值。没有`valueof`,我不得不在各处使用`any`,这很糟糕。