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

如何推断TypeScript条件返回类型函数的特定返回类型

解决泛型函数类型特定参数下的返回类型获取问题

你定义的X是泛型函数类型(泛型参数绑定在函数签名上),不是泛型类型,所以没法直接用X<true>这种语法来获取返回类型。下面给两种可行的解决方法:

方法1:自定义工具类型提取返回类型

不用修改原X的定义,通过条件类型结合infer来提取特定参数对应的返回类型:

type X = <A extends boolean>(x: A) => A extends true ? string : boolean;

// 自定义工具:传入函数类型和目标参数类型,返回对应返回值类型
type GetReturnForArg<Fn, Arg> = Fn extends (x: Arg) => infer R ? R : never;

// 使用示例
type Z = GetReturnForArg<X, true>; // 类型为string
type Y = GetReturnForArg<X, false>; // 类型为boolean

这个工具类型的逻辑很简单:判断函数是否能接受指定类型的参数,是的话就提取它的返回类型,刚好匹配原函数的条件返回逻辑。

方法2:改造原类型为泛型类型

如果允许调整原类型的结构,把泛型参数移到类型本身,就能更贴近你想要的写法:

// 将泛型参数A绑定到类型X上,变成泛型类型
type X<A extends boolean> = (x: A) => A extends true ? string : boolean;

// 先指定泛型参数,再用ReturnType提取返回类型
type Z = ReturnType<X<true>>; // string
type Y = ReturnType<X<false>>; // boolean

这种方式先通过X<true>得到接受true参数的函数类型,再用ReturnType工具提取它的返回值类型,逻辑更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:36:01