node.js - Suositeltu tapa jakaa tyyppejä frontendin ja nodejs GraphQL:n välillä


Olen alkanut käyttää TypeScriptiä GraphQL:n kanssa Nodejs:ssä. Mutta yksi asia, joka kiinnittää huomioni, on gql-koodin käyttäminen apollo-server-express-kirjastosta. Onko olemassa tapa, jolla voisin käyttää GraphQL-skeemassa käytettyjä tyyppejä muualla.

import { gql } from 'apollo-server-express';

export const userSchema = gql`
  type User {
    id: String!
    name: String
  }

  type Query {
    getUsers: [User]
  }
`;

Nyt en halua luoda erillistä rajapintaa User varten. Ja haluaisin, että seuraavanlainen rajapinta olisi valmiina:

export const usersResolver = {
  Query: {
    getUsers: () => db.get(condition).then(result => {
      const users:Array<User> = [];
    }
  }
};

Haluaisin myös käyttää näitä tyyppejä frontendissä.

Miten tämä voidaan tehdä.

Vastaus #1

Sinun pitäisi käyttää jotain kuten GraphQL Code Generatoria automaattisesti generoimaan tyypit puolestasi skeemasi ja kyselyjesi perusteella.