问题标签 [graphql-codegen]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
typescript - 使用 GraphQL 代码生成器从解析器返回不完整的形状
我使用以下约定让解析器返回部分数据,并允许其他解析器完成缺失的字段:
我遇到的问题是 GraphQL 代码生成器生成了一个Resolver
期望Query#users
返回完整User
形状的类型,当然它不知道即使我从 中返回部分形状Query#users
,由于User#extra
客户端最终会收到尽管如此,预期的形状。
在让 TS 满意的同时处理这种情况的最佳方法是什么?
typescript - 使用 graphql-code-generator 生成 React/Apollo 钩子时,数组类型是否不正确?
我想知道在 graphql 查询/突变中定义的数组(可以是有效的 graphql 实现中的单例或元组)是否被 graphql-codegen 转换为严格的数组类型。这是设计使然吗?
鉴于此架构:
这个查询:
graphql-code-generator 将生成:
但是在我见过的(大多数)graphql 实现中,放入一个数组或单个值是有效的:
我错过了什么吗?有没有办法覆盖这个?
这是一个重现“问题”的小型仓库:https ://github.com/kweestian/arrays-gql-gen
typescript - 当我映射和展平数组时,TypeScript 错误地出错?
我正在使用 GraphQL Codegen 从我的 GraphQL 模式生成 TypeScript 类型。这是我的查询,我使用了一个片段,因此它是唯一易于导出的类型:
返回的数据如下所示:
我可以在新变量上使用这种类型,它可以按预期工作:
但是,当我尝试在另一个变量上使用它时,我得到一个 TypeScript 错误:
TS2322: 类型'(({ __typename?: "ChildProfile" | undefined; } & Pick<ChildProfile, "id" | "name"> & { registrationToday?: ({ __typename?: "Registration" | undefined; } & Pick< ...> & { ...; }) | null | undefined; }) | null | undefined)[]' 不可分配给类型 'Maybe<{ __typename?: "ChildProfile" | 不明确的; } & Pick<ChildProfile, "id" | "name"> & { registrationToday?: ({ __typename?: "Registration" | undefined; } & Pick<...> & { ...; }) | 空 | 不明确的; }>[]'。类型 '({ __typename?: "ChildProfile" | undefined; } & Pick<ChildProfile, "id" | "name"> & { registrationToday?: ({ __typename?: "Registration" | undefined; } & 选择<...> & { ...; }) | 空 | 不明确的; }) | 空 | undefined' 不可分配给类型 'Maybe<{ __typename?: "ChildProfile" | 不明确的; } & Pick<ChildProfile, "id" | "name"> & { registrationToday?: ({ __typename?: "Registration" | undefined; } & Pick<...> & { ...; }) | 空 | 不明确的; }>'。类型 'undefined' 不可分配给类型 'Maybe<{ __typename?: "ChildProfile" | 不明确的; } & Pick<ChildProfile, "id" | "name"> & { registrationToday?: ({ __typename?: "Registration" | undefined; } & Pick<...> & { ...; }) | 空 | 不明确的; }>'。{ __typename?: "ChildProfile" | 不明确的; } & Pick<ChildProfile, "id" | "name"> & { registrationToday?: ({ __typename?: "Registration" | undefined; } & Pick<...> & { ...; }) | 空 | 不明确的; }>'。类型 'undefined' 不可分配给类型 'Maybe<{ __typename?: "ChildProfile" | 不明确的; } & Pick<ChildProfile, "id" | "name"> & { registrationToday?: ({ __typename?: "Registration" | undefined; } & Pick<...> & { ...; }) | 空 | 不明确的; }>'。{ __typename?: "ChildProfile" | 不明确的; } & Pick<ChildProfile, "id" | "name"> & { registrationToday?: ({ __typename?: "Registration" | undefined; } & Pick<...> & { ...; }) | 空 | 不明确的; }>'。类型 'undefined' 不可分配给类型 'Maybe<{ __typename?: "ChildProfile" | 不明确的; } & Pick<ChildProfile, "id" | "name"> & { registrationToday?: ({ __typename?: "Registration" | undefined; } & Pick<...> & { ...; }) | 空 | 不明确的; }>'。}) | 空 | 不明确的; }>'。类型 'undefined' 不可分配给类型 'Maybe<{ __typename?: "ChildProfile" | 不明确的; } & Pick<ChildProfile, "id" | "name"> & { registrationToday?: ({ __typename?: "Registration" | undefined; } & Pick<...> & { ...; }) | 空 | 不明确的; }>'。}) | 空 | 不明确的; }>'。类型 'undefined' 不可分配给类型 'Maybe<{ __typename?: "ChildProfile" | 不明确的; } & Pick<ChildProfile, "id" | "name"> & { registrationToday?: ({ __typename?: "Registration" | undefined; } & Pick<...> & { ...; }) | 空 | 不明确的; }>'。
reactjs - Graphql Code Generator 打字稿操作插件生成错误的类型
我正在使用带有 typescript 操作插件的 graphql 代码生成器从我的 GraphQL 模式生成 typescript 类型。一切正常,直到突然间,当我运行graphql-codegen --config codegen.yml
生成的类型错误时。
下图来自我保存所有生成类型的文件 graphql.tsx。图片
这里还可以看到graphql.tsx文件有145个问题。在对该文件进行快速单词搜索后,我发现 typescript 实用程序类型Pick
出现了 145 次。因此,图像中显示的问题发生在文件中的每种Pick
类型上。我认为 Pick 类型是由 typescript 操作插件生成的。
当我运行时,graphql-codegen --config codegen.yml
我没有错误。
GraphQL Playground 上的一切都localhost:4000/graphql
很好。
我的codegen.yml
文件:
什么可能导致这个问题。
任何帮助,将不胜感激。
graphql - 如何使用 Apollo Client 3 传递附加变量?
我正在尝试在我的客户端(阿波罗 3)中传递其他变量,如下所示:
这在阿波罗 3 号上不起作用。但在阿波罗 2 号上它起作用。我忘记了任何设置吗?还是不再可能了?
上下文:用于反应的 graphql 生成器。
typescript - 如果我不使用放大,如何从 AppSync GraphQL 架构生成 Typescript 定义?
我使用 aws-cdk 设置了我的 AppSync api,并且没有使用他们的放大框架。我试图弄清楚如何/是否可以schema.graphql
在不使用放大的情况下从我的 AppSync 文件生成 Typescript 定义,即无法访问amplify codegen
命令。我确实尝试安装和运行它,但我假设 amplify 期望文件位于某些目录中,因此失败。
我查看了https://graphql-code-generator.comAWSDateTime
但由于AppSync使用的特殊类型(例如我希望能够在不发布架构的情况下在本地生成这些类型。
这是可行的吗?
enums - Graphql Codegen - 具有自定义键 => 值的枚举
我使用 graphql-codegen 来生成类型文件。
例如,假设我的schema.graphql
文件中有以下内容:
我的generated-types.ts
文件中的输出如下:
有没有办法让我在 codegen 运行之前“覆盖”枚举的值?也许如下(我显然尝试过):
这反过来应该产生:
graphql - 如何使用 sequelize-typescript 通过自定义 Apollo GraphQL 解析器查询相关对象?
如何使用sequelize-typescript通过自定义 Apollo GraphQL 类型查询相关对象?我有以下没有打字稿的查询:
用户和事件GraphQL 类型:
用户模型
解析器:
打字稿看不到event.$get('user')
typescript - 当我不通过 GraphQL 请求项目时,如何在 Typescript 中处理非空值?- 打字稿 - GraphQL
我有一个 GraphQL (GQL) 服务器,并且在前端使用 TypeScript (TS)。这是我的 GQL 类型。
politicalEntityId
是不可为空的。如果我要求,这给了我行为politicalEntityId
,那么它保证在那里,但如果我不要求它,那么查询将正常运行。
我使用graphql-codegenerator从 GQL 模式中创建 TS 类型。TS 类型使politicalEntityId
as 非空,所以现在在前端我必须始终请求politicalEntityId
as 类型的一部分,AutomatedAlgorithmValue
即使它不是我想要请求的东西。
在我的前端代码中,我将数据保存在一个钩子中
这是我的 GQL 请求
此时我不需要politicalEntityId
,但是当我尝试将数据添加到我results
的 时,TS 编译器知道我正在null
为non-null
属性添加politicalEntityId
并引发错误。
non-null
如果存在具有其他属性的对象,情况会变得更糟,因为现在请求会随着每个不必要的属性/对象non-null
而变得越来越大。non-null
其他人是如何处理这个问题的?我每次都必须创建一个新类型吗?我是否使用Pick
来确定数据将在results
hook
? 是否有一个插件可以使所有内容都可以为空,如果有,我应该使用它吗?
typescript - `Country = "United States" | 应该如何输入?《加拿大》 | ...` 用 GraphQL 表示?
使用https://graphql-code-generator.com/,GraphQL 中的类型只是设置为String
,但在我的带有下拉输入的客户端代码中,类型更具体,因为它是从下拉选项本身派生的:
在这种情况下,从服务器返回的 graphql 数据的类型不如客户端的特定类型。有没有更好的方法来表示这些类型,所以它们是相同的?尝试在枚举中使用国家/地区名称时遇到验证错误。