GraphQL para TypeScript
GraphQL Code Generator

GraphQL SDL to TypeScript Types & Interfaces Converter

Converta definições GraphQL SDL, tipos, inputs e enums diretamente em interfaces e tipos TypeScript limpos e sem dependências no navegador.

Predefinições:
Entrada
/**
 * -----------------------------------------------------------------------------
 * GraphQL SDL to TypeScript Types & Interfaces
 * Zero-dependency, client-synthesized TypeScript definitions.
 * -----------------------------------------------------------------------------
 */

/* =============================================================================
 * GRAPHQL SCALARS & UTILITY HELPER TYPES
 * ============================================================================= */

export type Maybe<T> = T | null;
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };

/** All custom GraphQL scalar types defined in schema */
export type DateTime = string;
export type JSON = Record<string, any>;


/* =============================================================================
 * ENUMS
 * ============================================================================= */

export enum UserRole {
  ADMIN = 'ADMIN',
  CUSTOMER = 'CUSTOMER',
  VENDOR = 'VENDOR',
}

export enum OrderStatus {
  PENDING = 'PENDING',
  PROCESSING = 'PROCESSING',
  SHIPPED = 'SHIPPED',
  DELIVERED = 'DELIVERED',
  CANCELLED = 'CANCELLED',
}


/* =============================================================================
 * GRAPHQL INTERFACES, OBJECT TYPES & UNIONS
 * ============================================================================= */

export interface Node {
  id: string;
}

export interface Timestamps {
  createdAt: string;
  updatedAt: string | null;
}

/**
 * Represents a customer or administrator account in the store.
 */
export interface User extends Node, Timestamps {
  id: string;
  email: string;
  displayName: string;
  role: UserRole;
  orders: Order[];
  defaultAddress: Address | null;
  createdAt: string;
  updatedAt: string | null;
}

export interface Product extends Node, Timestamps {
  id: string;
  sku: string;
  title: string;
  price: number;
  inventoryCount: number;
  tags: string[];
  createdAt: string;
  updatedAt: string | null;
}

export interface Order extends Node, Timestamps {
  id: string;
  orderNumber: string;
  customer: User;
  status: OrderStatus;
  items: OrderItem[];
  totalAmount: number;
  shippingAddress: Address;
  createdAt: string;
  updatedAt: string | null;
}

export interface OrderItem {
  id: string;
  product: Product;
  quantity: number;
  unitPrice: number;
}

export interface Address {
  street: string;
  city: string;
  postalCode: string;
  country: string;
}

export interface Query {
  me: User | null;
  user: User | null;
  product: Product | null;
  products: Product[];
  search: SearchResult[];
}

export interface Mutation {
  createProduct: Product;
  checkoutCart: Order;
  cancelOrder: Order;
}

export type SearchResult = Product | User | Order;


/* =============================================================================
 * GRAPHQL INPUT OBJECTS & OPERATION ARGUMENTS
 * ============================================================================= */

export interface CreateProductInput {
  sku: string;
  title: string;
  price: number;
  inventoryCount?: number | null;
  tags?: string[] | null;
}

export interface CheckoutCartInput {
  userId: string;
  itemIds: string[];
  shippingAddress: AddressInput;
}

export interface AddressInput {
  street: string;
  city: string;
  postalCode: string;
  country: string;
}

/**
 * Arguments for User.orders
 */
export interface UserOrdersArgs {
  limit?: number | null;
  offset?: number | null;
}

/**
 * Arguments for Query.user
 */
export interface QueryUserArgs {
  id: string;
}

/**
 * Arguments for Query.product
 */
export interface QueryProductArgs {
  id: string;
}

/**
 * Arguments for Query.products
 */
export interface QueryProductsArgs {
  limit?: number | null;
  cursor?: string | null;
}

/**
 * Arguments for Query.search
 */
export interface QuerySearchArgs {
  query: string;
  limit?: number | null;
}

/**
 * Arguments for Mutation.createProduct
 */
export interface MutationCreateProductArgs {
  input: CreateProductInput;
}

/**
 * Arguments for Mutation.checkoutCart
 */
export interface MutationCheckoutCartArgs {
  input: CheckoutCartInput;
}

/**
 * Arguments for Mutation.cancelOrder
 */
export interface MutationCancelOrderArgs {
  orderId: string;
  reason?: string | null;
}

Schema Symbols
15 Entidades
Object types, inputs, interfaces, enums and unions parsed
Campos
56 Gerados
Strongly-typed TypeScript attributes and argument definitions
Compilation Speed
$<span suppressHydrationWarning>{generated.metrics.parseTimeMs}ms</span> (AST Puro no Cliente)
Descrição

Execução Local Zero-Knowledge

Todo o processamento, análise e geração de código ocorrem estritamente na memória do seu navegador. Zero uploads para servidores externos.

Motor Reativo de Submilissegundos

All data payloads remain strictly local with zero external server communication.

Production Ready Export

Clean, optimized output formats ready for immediate deployment.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor do Conversor de GraphQL SDL para Tipos e Interfaces TypeScript — Guia de referência

Converta definições GraphQL SDL, tipos, inputs e enums diretamente em interfaces e tipos TypeScript limpos e sem dependências no navegador.

Parâmetros principais e controles

Formato de DeclaraçãoEnum (interface | type)

Gera estruturas TypeScript como interfaces extensíveis ou aliases de tipo rígidos.

Padrão: interface
Estratégia para Campos AnuláveisEnum (null | undefined | both)

Estratégia de tipagem aplicada a campos opcionais e anuláveis do GraphQL sem o modificador de não-nulo (!).

Padrão: both
Sintaxe de ArraysEnum (T[] | Array<T>)

Convenção de tipagem aplicada a coleções de lista do GraphQL [Type].

Padrão: T[]
Representação de EnumsEnum (enum | union | const_object)

Formato de saída para definições enum do GraphQL (enum TypeScript, união literal de strings ou objeto com asserção const).

Padrão: union
Mapeamento de Escalares CustomizadosRecord<string, string>

Dicionário JSON mapeando tipos escalares específicos do GraphQL para tipos primitivos do TypeScript.

Padrão: {"DateTime": "string", "JSON": "Record<string, unknown>"}

Dicas profissionais e melhores práticas

Habilitar __typename nas uniões

Habilite a inclusão da propriedade __typename nas interfaces geradas para permitir estreitamento automático de união discriminada no Apollo Client, Urql e normalizadores de cache.

União de literais para enums

Prefira união de literais de strings ("ADMIN" | "USER") em vez de enums TypeScript numéricos para evitar código JavaScript emitido e garantir tree-shaking ideal.

Separar tipos input de entidades

Mantenha tipos de objeto input do GraphQL e interfaces de argumentos (como CreateUserInput) claramente separados dos modelos de domínio para props desacopladas.

Semântica de nulidade em listas

Observe a posição do ponto de exclamação: [Item!]! gera Item[], [Item]! resulta em (Item | null)[] e [Item!] produz Item[] | null.

Problemas comuns e solução de problemas

Erro de compilação TS2304: Cannot find name em escalares customizados

Defina correspondências explícitas na configuração de Mapeamento de Escalares (por exemplo, associando DateTime a string ou Date, e BigInt a string).

Dependências circulares em modelos recursivos do GraphQL SDL causam erros de tipo

Alterne o Formato de Declaração de "type" para "interface", já que interfaces TypeScript suportam declarações mútuas e autorreferenciadas nativamente.

Diretivas de esquema acionam avisos de sintaxe não reconhecida

O parser extrai automaticamente diretivas @deprecated para comentários JSDoc padrão; certifique-se de que diretivas customizadas sigam a sintaxe AST válida do SDL.

Perguntas frequentes (FAQ)

Como os modificadores não-nulos (!) do GraphQL são convertidos no TypeScript?▼

Campos com ponto de exclamação (ex.: name: String!) tornam-se propriedades obrigatórias (name: string). Campos sem ! são mapeados como opcionais ou anuláveis (name?: string | null) conforme sua estratégia.

O conversor suporta Uniões e Interfaces do GraphQL?▼

Sim. Interfaces GraphQL compilam para interfaces TypeScript extensíveis e Unions compilam para uniões discriminadas combinadas com o discriminador __typename.

Diretivas como @deprecated são convertidas em anotações no TypeScript?▼

Sim. A diretiva @deprecated(reason: "...") é extraída do AST do SDL e inserida como comentário JSDoc /** @deprecated ... */ sobre a propriedade correspondente.

Meu esquema proprietário GraphQL SDL é enviado para servidores externos?▼

Não. Toda a análise lexical, geração do AST e emissão das interfaces TypeScript são executadas 100% no navegador de forma local, sem telemetria ou envio de dados.

É possível converter tipos input e tipos normais do GraphQL?▼

Sim. Tanto declarações type quanto input são totalmente suportadas, gerando tipos seguros e adequados para variáveis de mutações e consultas.

Ferramentas e utilitários relacionados

Todas as ferramentas →
K8S Configmap Secret Generator Referência para DesenvolvedoresDesenvolvimento

Utilitário de desenvolvimento para geração de manifestos Kubernetes ConfigMap e Secret com codificação Base64, stringData, TLS, autenticação Docker e flags de recursos imutáveis.

Abrir ferramenta→
Guia do Desenvolvedor do Gerador de HorizontalPodAutoscaler (HPA v2) do KubernetesDesenvolvimento

Crie manifestos YAML de HPA v2 com metas de utilização de CPU e memória, métricas personalizadas e políticas de estabilização de escala vertical e horizontal.

Abrir ferramenta→
Gerador e Otimizador de Configuração de Produção Redis (redis.conf)Desenvolvimento

Gere arquivos redis.conf ajustados para produção com políticas maxmemory, persistência RDB/AOF, vinculação de rede restrita e autenticação ACL robusta.

Abrir ferramenta→
Guia do Desenvolvedor: Otimizador e Gerador de Hardware para PostgreSQL (postgresql.conf)Desenvolvimento

Calcule e gere configurações otimizadas do postgresql.conf com base no hardware disponível (shared_buffers, work_mem, effective_cache_size, max_connections).

Abrir ferramenta→
Backup diário de banco de dadosDesenvolvimento

Crie e estruture unidades de temporizador systemd e serviços complementares prontos para produção com agendamento OnCalendar, intervalos OnBootSec, execução Persistent e atrasos aleatórios.

Abrir ferramenta→
Guia do Desenvolvedor do Gerador de Configuração TypeScript (tsconfig.json)Desenvolvimento

Gere configurações tsconfig.json modernas e robustas para Next.js, Node.js, Vite ou bibliotecas com modo estrito, aliases de caminho e resolução de módulos.

Abrir ferramenta→