【发布时间】:2021-06-16 16:44:47
【问题描述】:
有没有办法使用typeof 来获取泛型函数的返回类型?
给定:
function SomeGeneric<ItemT>(a: ItemT) {
return {
value: a
}
}
我想获取函数的返回类型。
我首先假设typeof 应该提供泛型类型,但事实并非如此。当使用下面的SomeReturn<SomeItem> 时,它抱怨SomeReturn 不是泛型类型。
type SomeReturn = ReturnType<typeof SomeGeneric>
所以我尝试输入这个,但我找不到适用于 TSX 文件的语法。
type SomeReturn<ItemT> = ReturnType<typeof SomeGeneric<ItemT>>
有没有办法获取泛型函数的返回类型?请注意,在我的代码中,返回类型更复杂,我真的很想避免显式输入它。
【问题讨论】:
-
重要的是要注意函数的type 不是通用的。
type FuncType = typeof SomeGeneric = <ItemT>(a: ItemT) => { value: ItemT; }。所以你不能做typeof SomeGeneric<ItemT>。 -
我认为这可能会起作用
type SomeReturn<T> = FuncType extends (a: T) => infer R ? R : never;,但事实并非如此。我仍然收到unknown。
标签: typescript tsx