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

如何访问TypeScript函数泛型的约束类型?

解决TypeScript获取未导出泛型约束类型的问题

可以通过TypeScript的条件类型结合infer关键字提取未导出的BaseData类型,无需手动复制。具体实现步骤如下:

定义工具类型

先写一个通用工具类型,用来提取函数泛型参数的约束类型:

type GetGenericConstraint<T> = T extends <Data extends infer U>(...args: any[]) => any ? U : never;

提取目标类型

导入getData函数后,用上述工具类型获取BaseData的等价类型:

import { getData } from '目标库';

type MyType = GetGenericConstraint<typeof getData>;

此时MyType就完全等价于库中未导出的BaseData,可以直接在后续代码中引用。

原理说明

  • 条件类型T extends <Data extends infer U>(...args: any[]) => any ? U : never会校验传入的类型T是否为带有泛型参数Data且该参数受U约束的函数
  • 匹配成功时,infer U会自动提取出这个约束类型U(即BaseData)
  • 最终将提取到的类型赋值给MyType完成类型复用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:20:44