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

对泛型应用泛型:TypeScript类型推导技术问询

TypeScript泛型类型推导问题

给定如下泛型类型Fn,它接收另一个泛型Idiot作为输入。是否存在一种方式,随后将泛型A_应用到该泛型Idiot上,从而推导正确的类型?

type Fn = <Idiot extends <A>(a:A)=>A>(
  inputFn: (i:any)=>Idiot
)=><A_>(a: Parameters<Idiot<A_>>)=>ReturnType<Idiot<A_>>

解决方案与分析

可以通过简化类型定义让A_正确绑定到Idiot的泛型参数上,直接利用Idiot的泛型特性推导类型,无需借助Parameters和ReturnType绕弯:

type Fn = <Idiot extends <A>(a: A) => A>(
  inputFn: (i: any) => Idiot
) => <A_>(a: A_) => Idiot<A_>

说明:

  • 原定义中Idiot<A_>本质是(a: A_) => A_类型的函数,因此直接将返回函数的参数类型指定为A_,返回类型指定为Idiot<A_>,TypeScript就能自动完成类型推导。
  • 调整后的定义更直观,也能确保A_的类型正确传递给Idiot的泛型参数,避免不必要的类型工具函数调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:22:10