GraphQL a TypeScript
GraphQL Code Generator

GraphQL SDL to TypeScript Types & Interfaces Converter

Transforme definiciones de esquemas GraphQL (SDL), tipos, inputs y enums directamente en interfaces TypeScript limpias y sin dependencias.

Preajustes:
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 Generados
Strongly-typed TypeScript attributes and argument definitions
Compilation Speed
$<span suppressHydrationWarning>{generated.metrics.parseTimeMs}ms</span> (AST Puro de Cliente)
Descripción

Ejecución Local de Conocimiento Cero

Todo el procesamiento, análisis y generación de código se ejecutan estrictamente en la memoria del navegador. Cero subidas a servidores externos.

Motor Reactivo de Submilisegundos

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

Production Ready Export

Clean, optimized output formats ready for immediate deployment.

Referencia técnica y guía de arquitectura

Guía de desarrollo del convertidor de GraphQL SDL a tipos e interfaces TypeScript — Guía de referencia

Transforme definiciones de esquemas GraphQL (SDL), tipos, inputs y enums directamente en interfaces TypeScript limpias y sin dependencias.

Parámetros clave y controles

Formato de declaraciónEnum (interface | type)

Genera estructuras de TypeScript como interfaces extensibles o alias de tipo estrictos.

Por defecto: interface
Estrategia para campos anulablesEnum (null | undefined | both)

Estrategia de tipado para campos opcionales o anulables en GraphQL sin el modificador no nulo (!).

Por defecto: both
Sintaxis de arreglosEnum (T[] | Array<T>)

Formato de tipado aplicado a colecciones de listas de GraphQL [Type].

Por defecto: T[]
Representación de enumeracionesEnum (enum | union | const_object)

Estilo de salida para enums de GraphQL (enum nativo, unión de literales de cadena u objeto con aserción const).

Por defecto: union
Mapeo de escalares personalizadosRecord<string, string>

Diccionario JSON para mapear escalares personalizados de GraphQL a tipos de TypeScript.

Por defecto: {"DateTime": "string", "JSON": "Record<string, unknown>"}

Consejos profesionales y mejores prácticas

Uso de __typename discriminado

Incluya la propiedad __typename en las interfaces generadas para habilitar el estrechamiento automático de uniones discriminadas en Apollo Client, Urql y cachés de Relay.

Uniones literales de cadenas

Emita enumeraciones como uniones literales de cadenas ("ADMIN" | "USER") en lugar de TypeScript enums para evitar código JavaScript adicional y maximizar el tree-shaking.

Separar tipos input de entidades

Mantenga los tipos de objetos input y las interfaces de argumentos de GraphQL (como CreateUserInput) estrictamente separados de las entidades de dominio para props limpias.

Nulabilidad en listas GraphQL

Observe la posición de los signos de exclamación: [Item!]! genera Item[], [Item]! produce (Item | null)[] y [Item!] genera Item[] | null.

Errores comunes y solución de problemas

Error de compilación TS2304: Cannot find name con escalares personalizados

Defina correspondencias explícitas en el Mapeo de escalares personalizados (por ejemplo, asignar DateTime a string o Date, y BigInt a string).

Referencias circulares en esquemas GraphQL recursivos generan errores de tipo

Cambie el Formato de declaración de "type" a "interface", ya que las interfaces de TypeScript resuelven declaraciones circulares y autorreferenciales de forma nativa.

Directivas de esquema no reconocidas provocan advertencias de sintaxis

El analizador convierte automáticamente directivas @deprecated en etiquetas JSDoc; asegúrese de que las directivas personalizadas sigan la sintaxis AST de SDL válida.

Preguntas frecuentes (FAQ)

¿Cómo se traducen las restricciones no nulas (!) de GraphQL a TypeScript?▼

Un campo con signo de exclamación (por ejemplo, name: String!) se traduce en una propiedad obligatoria (name: string). Los campos sin ! se asignan como opcionales o anulables (name?: string | null) según la configuración elegida.

¿Esta herramienta admite Unions e Interfaces de GraphQL?▼

Sí. Las interfaces de GraphQL se traducen a interfaces de TypeScript ampliables, y los tipos Union se compilan en uniones discriminadas con la propiedad discriminadora __typename.

¿Se convierten las directivas como @deprecated en anotaciones de TypeScript?▼

Sí. Las directivas @deprecated(reason: "...") del SDL se extraen y se generan como bloques de comentarios JSDoc /** @deprecated ... */ encima de las propiedades correspondientes.

¿Se envía o almacena mi esquema GraphQL SDL en servidores externos?▼

No. Todo el análisis léxico de SDL, la creación del AST y la generación del código TypeScript se ejecutan al 100% de forma local en el navegador, sin solicitudes ni telemetría externa.

¿Se pueden convertir tanto definiciones type como input de GraphQL?▼

Sí. Se admiten tanto los tipos de objeto estándar como los tipos input de GraphQL, generando interfaces seguras para variables de mutaciones y consultas.

Herramientas y utilidades relacionadas

Todas las herramientas →
K8S Configmap Secret Generator Referencia para DesarrolladoresDesarrollo

Utilidad de desarrollo para generar manifiestos de ConfigMap y Secret en Kubernetes con codificación Base64, stringData, TLS, autenticación de Docker y flags inmutables.

Abrir herramienta→
Guía para Desarrolladores del Generador de Kubernetes HorizontalPodAutoscaler (HPA v2)Desarrollo

Genere manifiestos YAML de HPA v2 con objetivos de uso de CPU y memoria, métricas personalizadas y políticas de estabilización de escalado ascendente y descendente.

Abrir herramienta→
Generador y Optimizador de Configuración de Producción Redis (redis.conf)Desarrollo

Genere archivos de configuración redis.conf ajustados para producción con políticas maxmemory, persistencia RDB/AOF, enlaces de red seguros y autenticación ACL.

Abrir herramienta→
Guía de Desarrollo: Optimizador y Generador de Hardware para PostgreSQL (postgresql.conf)Desarrollo

Calcule y genere configuraciones optimizadas de postgresql.conf basadas en las especificaciones del hardware (shared_buffers, work_mem, effective_cache_size, max_connections).

Abrir herramienta→
Guía de Desarrollo del Generador de Unidades Systemd (.timer y .service) de LinuxDesarrollo

Diseñe y genere unidades de temporizador (.timer) y servicios complementarios de systemd listos para producción con programación OnCalendar, intervalos OnBootSec, ejecución Persistent y demoras aleatorias.

Abrir herramienta→
Guía para Desarrolladores del Generador de Configuración TypeScript (tsconfig.json)Desarrollo

Genera configuraciones tsconfig.json modernas y robustas para Next.js, Node.js, Vite o librerías con modo estricto, alias de rutas y resolución de módulos.

Abrir herramienta→