You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript类型层面:为泛型函数应用类型参数并获取返回类型可行吗?

问题解答

结论

这种写法的可行性取决于你的TypeScript版本:

  • TypeScript 4.7及以上:可以直接使用
  • TypeScript 4.6及以下:不可行

原因说明

在TS 4.7之前,TypeScript不支持直接给typeof wrap这类泛型函数类型传入类型参数。typeof wrap获取到的是泛型函数的定义类型<T>(t: T) => { response: T },而ReturnType工具类型只能处理已经确定类型参数的具体函数类型,无法直接解析泛型函数本身。

TS 4.7版本新增了「泛型函数类型实例化」语法,允许在类型中直接写typeof wrap<T>来获取指定类型参数T后的函数类型,此时ReturnType就能正确提取出对应的返回类型{ response: T }。

兼容所有版本的替代写法

如果需要兼容低版本TS,或者不想依赖版本特性,有两种简单实现方式:

方式1:直接显式定义类型

既然返回结构明确,直接写出类型即可:

type Wrapped<T> = { response: T };

方式2:用条件类型推导

通过条件类型捕获泛型函数的返回值:

const wrap = <T>(t: T) => ({ response: t });

type Wrapped<T> = typeof wrap extends <U>(u: U) => infer R ? (U extends T ? R : never) : never;

内容的提问来源于stack exchange,提问作者caeus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 23:55:11