TS para GraphQL SDL
Gerador de esquemas GraphQL SDL

Conversor de interfaces TypeScript para esquemas GraphQL SDL

Referência técnica para desenvolvedores converterem interfaces, tipos e enums TypeScript em esquemas GraphQL Schema Definition Language (SDL) para produção.

Predefinições
Entrada de interfaces e tipos TypeScript
# No TypeScript interfaces, types, or enums detected in source.
# Paste TypeScript definitions or select a scenario preset above.
Tipos definidos
0 Tipos e Inputs
Total de campos
0 Campos gerados
Enums e uniões
0.69ms (AST de cliente puro)

Análise AST no lado do cliente

Todas as interfaces, aliases de tipo e enums TypeScript são analisados localmente na memória do navegador sem enviar código para servidores remotos.

Geração completa de SDL do GraphQL

Converte modelos complexos TypeScript em tipos de objeto, tipos de entrada, enums, uniões e escalares personalizados padrão do GraphQL SDL.

Pronto para produção e exportação com abas

Exporte definições de esquema completas (.graphql), tipos de entrada separados ou assinaturas de resolvers com cópia e download instantâneos.

Referência técnica e guia de arquitetura

Cheatsheet de TypeScript para GraphQL SDL — Guia de referência

Referência técnica para desenvolvedores converterem interfaces, tipos e enums TypeScript em esquemas GraphQL Schema Definition Language (SDL) para produção.

Parâmetros principais e controles

nullabilityMode'ts' | 'strict' | 'nullable'

Controla a semântica de nulabilidade dos campos GraphQL. 'ts' reflete a opcionalidade (? e null); 'strict' força não-nulo (!) em propriedades obrigatórias; 'nullable' remove todos os modificadores de não-nulo.

Padrão: 'ts'
autoMapIdboolean

Converte propriedades TypeScript denominadas id, _id ou terminadas em Id de string ou number para o escalar nativo ID do GraphQL.

Padrão: true
smartNumbersboolean

Diferencia tipos number do TypeScript entre os escalares GraphQL Int e Float através de convenções de nomenclatura e heurísticas da AST.

Padrão: true
generateInputsboolean

Gera tipos de objeto input equivalentes no GraphQL, omitindo IDs de leitura e convertendo subtipos aninhados em formatos de entrada.

Padrão: true
parseDeprecationboolean

Identifica tags JSDoc @deprecated em propriedades TypeScript e as converte na diretiva @deprecated(reason: "...") do GraphQL.

Padrão: true

Dicas profissionais e melhores práticas

Preservar Comentários JSDoc

Adicione anotações JSDoc multilinhas (`/** ... */`) às propriedades do TypeScript para que o gerador as converta em blocos de descrição com aspas triplas padrão do GraphQL SDL.

Mapear Tipos Union em Enums

Utilize unions de literais de string (`type Status = 'OPEN' | 'CLOSED'`) para gerar enums nativos no GraphQL em vez de converter os atributos indevidamente no escalar genérico String.

Separar Tipos Input no SDL

Ative a opção `generateInputs` em fluxos de mutação para derivar tipos `input` dedicados, expurgando automaticamente chaves primárias e timestamps gerenciados pelo backend.

Declarar Escalares para Data

Habilite `declareScalars` para inserir automaticamente a declaração `scalar DateTime` no cabeçalho do esquema sempre que instâncias de `Date` forem encontradas no código TypeScript.

Problemas comuns e solução de problemas

Referências circulares em interfaces TypeScript geram avisos de recursão profunda

Isole dependências bidirecionais marcando campos relacionais como opcionais (anuláveis) ou usando uniões de tipos, permitindo que o analisador gere o SDL sem estourar a pilha de execução.

Tipos utilitários avançados como Omit<T, K> ou Pick<T, K> não expandem seus campos

Expanda tipos utilitários e mapeados em interfaces explícitas antes da conversão ou execute `tsc --declaration` para alimentar o parser com nós estruturais já resolvidos.

Perguntas frequentes (FAQ)

O código TypeScript é analisado e convertido inteiramente no navegador local?▼

Sim. Toda a tokenização e a transformação de AST para GraphQL SDL ocorrem localmente no navegador via JavaScript. Nenhum dado ou estrutura de tipo é enviado para servidores externos.

Como o conversor lida com a herança de interfaces TypeScript via extends?▼

Como os tipos de objeto GraphQL não suportam herança tradicional, o conversor achata e mescla os campos da interface pai diretamente no tipo GraphQL final.

É possível gerar tipos input do GraphQL separados para operações de mutação?▼

Sim. Com a opção `generateInputs` ativa, a ferramenta gera definições de `input` paralelas sufixadas com `Input`, descartando automaticamente identificadores gerados pelo servidor.

Como as uniões de literais de string do TypeScript são mapeadas no GraphQL?▼

Uniões puras de literais de string (como `'DRAFT' | 'PUBLISHED' | 'ARCHIVED'`) são convertidas em blocos `enum` do GraphQL, enquanto uniões complexas de objetos tornam-se definições de `union`.

Ferramentas e utilitários relacionados

Todas as ferramentas →