typescript 使用泛型 ex TypedDocumentNode 将类型拉出类型<MyType, unknown>

问题描述 投票:0回答:2

我正在使用一个库,我可以从函数返回的变量中获取类型。

const myVar = gql(somestring) // gql is the library function
type myVarType = typeof myVar

// myVarType = TypedDocumentNode<TypeIWant, Unknown>

type WantedType = ??

我想要得到的是一个等于从 TypedDocumentNode 中提取的

TypeIWant
的类型变量。 不确定这是否可能。 仍在学习 Typescript 的更高级用法。

供参考,使用 graphql 的 codegen 库

typescript typescript-generics
2个回答
0
投票

所以我解决这个问题的方法就是使用这个

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

事实证明,提出问题有助于找出正确的关键词来找到答案。


0
投票

如果您使用

@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
© www.soinside.com 2019 - 2024. All rights reserved.