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

如何从TypeScript泛型类型中提取模板参数?

提取泛型类型的默认模板参数

从TypeScript 4.7版本开始,已经支持通过条件类型的infer语法提取泛型类型的默认模板参数,你给出的代码现在可以正常工作。

验证示例

type bla<T = number> = 123;

// 提取默认参数类型
type T = bla extends bla<infer U> ? U : never; // T 的类型为 number

原理说明

当你直接使用未指定参数的泛型类型(如bla)时,TypeScript会自动将其视为使用了默认参数的实例(即bla<number>)。此时通过条件类型的infer关键字,就能从这个默认实例中提取出对应的模板参数类型。

多参数泛型的情况

如果泛型包含多个带默认值的参数,同样可以依次提取:

type Foo<T = string, U = boolean> = [T, U];

type DefaultT = Foo extends Foo<infer T, infer U> ? T : never; // string
type DefaultU = Foo extends Foo<infer T, infer U> ? U : never; // boolean

内容的提问来源于stack exchange,提问作者Page not found

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:29:56