【发布时间】:2021-05-17 13:09:15
【问题描述】:
我一直在搜索,但似乎找不到答案,或者我可能正在搜索错误的元素。
但是正如我能够使用 keyof T 来表达一个联合类型的访问器,其中 T 是一个泛型类型,有没有办法获得这些相应键的伴随类型?
举个例子,假设我们有以下对象:
interface Data {
name: string,
age: number
}
还有一个通用方法:
const genericMethod = <T>(key: keyof T) => {
console.log(key) // --> "name", "age"
// Pseudo code idea, the idea is to get the appropriate type that correspond to our keyof
console.log(typeof T[key]) // --> "string", "number"
}
使用 Data 类型作为我们的泛型调用此方法将按预期产生一个联合类型键,该键包含我们的 Data 接口的所有属性,但我也希望能够推断它们各自的类型。
genericMethod<Data>(keyof Data);
【问题讨论】:
-
推断?做什么的?您的伪代码显示了一些本质上不可能的事情,因为类型(实际上是接口)在运行时不存在,因此您无法记录它们。
-
@IngoBürk 感谢您的快速回答,我似乎一直在以错误的方式看待这个问题,正如我在下面对 choz 的回答中所描述的那样。正如你们正确指出的那样,我想记录它们,但我想我必须找到另一种方法
标签: typescript typescript-generics