Jeg*_*ggy 10 typescript graphql graphql-codegen
我正在使用库中的打字稿操作graphql-codegen。但我来自 Apollo 已弃用的代码生成器,并且很喜欢它们导出类型的方式。
对于这样的查询
query MyData {
viewer {
id
username
}
}
Run Code Online (Sandbox Code Playgroud)
我将从 apollo-tooling codegen 中得到这个:
query MyData {
viewer {
id
username
}
}
Run Code Online (Sandbox Code Playgroud)
但在 graphql-codegen 中我得到了这个:
export type MyDataQuery_viewer = {
__typename: 'Viewer';
id: number;
username: string;
}
export type MyDataQuery = {
__typename: 'Query',
viewer?: MyDataQuery_viewer;
}
Run Code Online (Sandbox Code Playgroud)
是否存在任何配置graphql-codegen可以为我提供所有嵌套对象的类型,而不是在单个类型中定义所有内容?
小智 1
graphql-codegen 默认情况下会为片段生成单独的类型,这就是我解决这个问题的方法:
fragment ViewerFields on Viewer {
id
username
}
query MyData {
viewer {
...ViewerFields
}
}
Run Code Online (Sandbox Code Playgroud)
会生成
export type ViewerFieldsFragment = {
__typename: 'Viewer';
id: number;
username: string;
}
export type MyDataQuery = {
__typename: 'Query',
viewer?: {
__typename: 'Viewer';
id: number;
username: string;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以ViewerFieldsFragment在代码中使用。Fragment如果需要,您可以使用插件的omitOperationSuffix配置选项operations(typescript-operations插件在幕后使用)更改后缀。
| 归档时间: |
|
| 查看次数: |
749 次 |
| 最近记录: |