返回对象时架构的突变响应

时间:2020-04-04 12:33:06

标签: javascript reactjs typescript graphql apollo

我正在运行一个graphql突变const [updateUser] = useMutation(UPDATE_USER);,我想添加突变响应(interface myResoponse)

但是,在这种情况下,我无法理解如何制定响应类型。这是突变:

updateUser(email: String!, input: UpdateUserInput!): User!

在模式中,响应类型是整个对象,如下所示:

type User {
  email: String!
  firstName: String
  id: Int!
  lastName: String
  phoneNumber: String!
}

如果我通过GraphQL代码生成器进行检查,这就是我得到的:

export type User = {
   __typename?: 'User',
  email: Scalars['String'],
  firstName?: Maybe<Scalars['String']>,
  id: Scalars['Int'],
  lastName?: Maybe<Scalars['String']>,
  phoneNumber: Scalars['String'],
};

但是我无法在我的Typescript代码中使用“标量”。如何编写此突变的响应界面?我应该在响应类型中使用哪种模式?来自架构还是代码生成器?

1 个答案:

答案 0 :(得分:0)

这可能有助于在编译gql时将其转换为打字稿,您可以在此处找到更多信息和说明:https://medium.com/the-guild/graphql-code-generator-a34e3785e6fb

现在,我们有了一个通用的JSON结构,如果要将模式转换为TypeScript类型定义,则需要使用以下模板进行编译:

{{#each models}}
  export type {{name}} = {
  {{#each fields}}
    {{name ~}} {{#unless required ~}} ? {{~ /unless ~}} : {{ type }};
    {{/each}}
    }
{{/each}}

现在,当我们将两者一起使用时,我们将得到:

export type Person {
  name: string;
  age?: number;
}