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

如何从TypedDocumentNode泛型中提取目标TypeScript类型?

提取TypedDocumentNode中的目标泛型类型

完全可以实现,利用TypeScript的条件类型和infer关键字就能提取TypedDocumentNode的第一个泛型参数(也就是你要的TypeIWant)。

实现步骤:

  1. 定义一个工具类型,专门提取目标泛型:
type ExtractQueryType<T> = T extends TypedDocumentNode<infer TargetType, any> ? TargetType : never;
  1. 用这个工具类型处理你的变量类型:
const myVar = gql(somestring); // gql为库函数
type myVarType = typeof myVar;
type WantedType = ExtractQueryType<myVarType>; // 此时WantedType就是TypeIWant

原理说明:

  • infer TargetType会让TypeScript自动推断TypedDocumentNode第一个泛型参数的具体类型,并将其赋值给TargetType
  • 条件类型会判断传入的T是否符合TypedDocumentNode<*, *>的结构,符合则返回推断出的TargetType,否则返回never

如果是用GraphQL Codegen,它通常会直接为你的GraphQL查询生成对应的类型文件,不需要手动做这种提取,但手动提取的方案在需要临时处理类型时完全可用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:20:38