我正在使用一个库,我可以从函数返回的变量中获取类型。
const myVar = gql(somestring) // gql is the library function
type myVarType = typeof myVar
// myVarType = TypedDocumentNode<TypeIWant, Unknown>
type WantedType = ??
我想要得到的是一个等于从 TypedDocumentNode 中提取的
TypeIWant
的类型变量。
不确定这是否可能。 仍在学习 Typescript 的更高级用法。
供参考,使用 graphql 的 codegen 库
所以我解决这个问题的方法就是使用这个
type extracted<D> = D extends TypedDocumentNode<infer T, any> ? T : never
type Teamstore = extracted<typeof MyTestFragVariable>
提取的类型是可重用的,因此可以将它们放在一起,但就我而言,我会将其用于其他用途。 这是使用推断从我的主要类型中提取类型。
有帮助的文章 https://itnext.io/typescript-extract-unpack-a-type-from-a-generic-baca7af14e51
事实证明,提出问题有助于找出正确的关键词来找到答案。
@graphql-typed-document-node/core
包,那么您可以使用 ResultOf
和 VariablesOf
帮助器引用 GraphQL 文档的通用类型。
import { ResultOf } from "@graphql-typed-document-node/core";
const myVar = gql(somestring); // TypedDocumentNode<R, V>
type myVarType = ResultOf<typeof myVar>; // Now it's R
import { VariablesOf } from "@graphql-typed-document-node/core";
const myVar = gql(somestring); // TypedDocumentNode<R, V>
type myVarType = VariablesOf<typeof myVar>; // Now it's V