Saltar al contenido

Esquema GraphQL a tipos TypeScript

Convierte un esquema GraphQL en tipos, interfaces y enums de TypeScript equivalentes.

Entrada
Salida

Esquema GraphQL a tipos TypeScript

Pega un documento de esquema GraphQL (SDL) — las declaraciones de tipos, entradas e interfaces que describen una API GraphQL — y esta herramienta genera los tipos TypeScript correspondientes. Equipos de backend y frontend obtienen formas tipadas para cada objeto en el esquema en una sola pasada, sin configurar un paso de compilación solo para ver los tipos.

El mapeo de escalares sigue la especificación GraphQL: ID y String se convierten en string, Int y Float en number, Boolean sigue siendo boolean, y cualquier escalar personalizado — DateTime, JSON, Upload — recurre a un tipo configurable que elijas. Los campos anulables pueden ser opcionales (field?: Type) o uniones explícitas con nulo (field: Type | null). Elige alias de tipo de TypeScript o interfaces, con implements convirtiéndose en extends cuando se seleccionan interfaces. Los enums generan una unión de literales de cadena o un enum TypeScript real. Un prefijo o sufijo de nombre evita colisiones con nombres escritos a mano, y los comentarios del esquema se conservan como JSDoc.

Los argumentos de campo y directivas se eliminan automáticamente, ya que los tipos TypeScript describen forma: "field(id: ID!): User @deprecated" se convierte en un campo simple. Los tipos de listas anidadas como [String!]! mantienen su anulabilidad independiente. Las declaraciones pueden ordenarse alfabéticamente.

Todo funciona localmente en tu navegador — el esquema nunca se carga a ningún lado. Copia los tipos generados, descárgalos como .txt, o envía la salida a otra herramienta para refinar el esquema.

Preguntas frecuentes

¿Maneja modificadores anidados de lista y no nulable como [String!]!?
Sí. Cada nivel de anulabilidad — la lista misma y sus elementos — se mapea independientemente, por lo que [String!]! se convierte en string[] mientras que [String] se convierte en (string | null)[].
¿Qué sucede con escalares personalizados como DateTime o JSON?
Se mapean al tipo de reserva establecido en la opción "Tipo escalar personalizado" (unknown por defecto). Establécelo en string, Date u otro tipo correspondiente y cada campo que use ese escalar lo adopta.
¿Se conservan los argumentos de campo y las directivas en la salida?
No. Los tipos de TypeScript solo describen forma, así que argumentos como (limit: Int) y directivas como @deprecated se descartan; el campo en sí aún se convierte normalmente.
¿Puedo generar interfaces en lugar de alias de tipo?
Sí. Cambia "Tipo de declaración" a Interfaces, y cualquier cláusula implements en un tipo GraphQL se convierte en una cláusula extends en la interfaz TypeScript.
¿Mi esquema se carga a algún lado?
No. La conversión se ejecuta completamente en tu navegador — tu esquema GraphQL nunca abandona tu dispositivo.