Avatar ·

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`,这很糟糕。