在TypeScript中,可以使用类型推断和条件类型来告诉编译器从参数对象中获取泛型类型。具体的方法如下:
function getValue<T>(obj: { value: T }): T {
return obj.value;
}
type ExtractValueType<T> = T extends { value: infer V } ? V : never;
function getValue<T>(obj: { value: T }): ExtractValueType<T> {
return obj.value;
}
在上述代码中,ExtractValueType<T>
是一个条件类型,它会根据传入的泛型类型T
判断是否符合{ value: infer V }
的结构,如果符合,则返回V
,否则返回never
。
const obj = { value: 123 };
const result = getValue(obj); // result的类型被推断为number
在上述代码中,编译器会根据参数obj
的类型推断出泛型类型为number
,因此result
的类型也被推断为number
。
推荐的腾讯云相关产品和产品介绍链接地址:
请注意,本回答仅提供了一种解决方案,可能还有其他方法可以实现相同的效果。
领取专属 10元无门槛券
手把手带您无忧上云