Schema GraphQL para tipos TypeScript
Converta um esquema GraphQL em tipos, interfaces e enums TypeScript correspondentes.
Schema GraphQL para tipos TypeScript
Cole um documento GraphQL SDL (schema definition language) — as declarações de tipo, entrada, interface e enum que descrevem uma API GraphQL — e esta ferramenta gera os tipos TypeScript correspondentes. Equipas de backend que constroem um servidor GraphQL, ou equipas de frontend que o consomem sem ferramentas de codegen instaladas, obtêm formas tipadas para cada objeto, entrada e interface no esquema numa única passagem, sem necessidade de criar um passo de build apenas para ver como os tipos ficam.
O mapeamento de escalares segue a especificação GraphQL por padrão: ID e String tornam-se string, Int e Float tornam-se number, Boolean mantém-se boolean, e qualquer scalar customizado — DateTime, JSON, Upload — recua para um tipo configurável que escolhe. Os campos anuláveis podem ser renderizados como uma propriedade opcional (field?: Type) ou como uma união explícita com null (field: Type | null), e a mesma escolha de forma aplica-se a declarações inteiras: escolha alias de tipo TypeScript ou interfaces, com implements tornando-se extends quando interfaces são selecionadas. Enums geram uma união de string-literal ou um enum TypeScript real. Um prefixo ou sufixo de nome evita colisões de nomes gerados com os escritos manualmente, comentários e blocos de "description" do esquema transitem como JSDoc, e tipos cujo nome começa com underscore — os próprios tipos de introspection do GraphQL — são omitidos por padrão.
Os argumentos de campo e as diretivas são eliminadas automaticamente, uma vez que os tipos TypeScript descrevem forma em vez de resolvers: "field(id: ID!): User @deprecated" torna-se um campo simples. Os tipos de lista aninhados como [String!]! mantêm a sua nulabilidade interna e externa independente, portanto uma lista não-nula de strings anuláveis e uma lista anulável de strings não-nulas ficam diferentes. As declarações também podem ser ordenadas alfabeticamente em vez de seguir a ordem original do esquema.
Tudo funciona localmente no seu navegador — o esquema que cola nunca é enviado para lado algum. Copie os tipos gerados, transfira-os como ficheiro .txt, ou envie a saída diretamente de volta para a entrada para continuar a refinar o esquema.