Ответ мутации из схемы при возврате объекта - PullRequest
0 голосов
/ 04 апреля 2020

Я использую мутацию 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 голосов
/ 04 апреля 2020

Это может помочь преобразовать ваш gql в машинописный текст, когда вы его компилируете, вы можете найти больше информации и инструкций здесь: https://medium.com/the-guild/graphql-code-generator-a34e3785e6fb

Теперь у нас есть обобщенный c JSON структура, и если мы хотим превратить нашу схему в определение типа TypeScript, нам нужно скомпилировать ее с помощью следующего шаблона:

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

Теперь, когда мы будем использовать оба вместе, мы получим:

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