Generador de interfaces TypeScript desde JSON

Pega una muestra de JSON (una respuesta de API, una configuración) y obtén interfaces de TypeScript listas para usar, con tipos anidados, propiedades opcionales y tipos unión.

Actualizado el
Declarar como
Arrays

Tus datos nunca salen de tu ordenador. Todo se procesa localmente en tu navegador.

Cómo usar: JSON a TypeScript

  1. Pega una muestra de JSON representativa, por ejemplo una respuesta copiada de la pestaña de red de tu navegador.
  2. Define el nombre del tipo raíz (por ejemplo User o ApiResponse).
  3. Elige interface o type, la sintaxis de los arrays y si quieres exportar las declaraciones o marcar las propiedades como readonly.
  4. Copia el código generado en un archivo .ts o descárgalo.

¿Qué hace un convertidor de JSON a TypeScript?

Infiere tipos estáticos a partir de datos de ejemplo. En lugar de escribir a mano una interfaz para cada respuesta de API, pegas una respuesta real y obtienes las declaraciones de TypeScript correspondientes: una interfaz con nombre por cada objeto anidado, arrays tipados y uniones cuando los valores varían. Es la forma más rápida de obtener autocompletado y comprobaciones en tiempo de compilación para datos que recibes de una API REST, un webhook o un archivo de configuración JSON.

Cómo se infieren los tipos

Valor JSONTipo TypeScript
"text"string
42, 3.14number
trueboolean
nullnull (combinado con otros tipos, p. ej. string | null)
{ … }Una interfaz con nombre (clave profile → Profile)
["a", "b"]string[]
[1, "two"](number | string)[]
[]unknown[] (no hay muestra de la que inferir)

Los arrays de objetos se fusionan

Cuando un array contiene varios objetos, el generador los fusiona en una sola interfaz en lugar de tomar solo el primer elemento. Una clave que aparece en algunos elementos pero no en otros se vuelve opcional (archived?: boolean), y una clave cuyos valores difieren entre elementos recibe un tipo unión (license: string | null). Las interfaces de los elementos se nombran en singular a partir de la clave: repos → Repo, categories → Category. Las estructuras idénticas que aparecen en distintos lugares se declaran una sola vez y se reutilizan.

interface vs. type

Para formas de objeto, ambos son casi intercambiables. Las declaraciones interface se pueden extender con extends y fusionar volviéndolas a declarar, y suelen dar mensajes de error más claros; los alias type pueden expresar uniones, tuplas y tipos mapeados. Muchos equipos usan interfaces para modelos de datos: elige la que encaje con tus reglas de lint (por ejemplo @typescript-eslint/consistent-type-definitions).

Límites de la inferencia: revisa el resultado

Una muestra solo muestra lo que había. Un campo que es null en tu muestra se tipará como null; cámbialo al tipo real (por ejemplo string | null). Las fechas llegan como cadenas ISO y se tipan como string, porque JSON no tiene tipo fecha. Las claves que no son identificadores válidos, como social-links, se entrecomillan automáticamente. Para validar en tiempo de ejecución datos no confiables, combina estos tipos con un validador de esquemas como Zod. Antes de generar, limpia tu muestra con el Formateador de JSON, o convierte configuraciones YAML con YAML a JSON.

También se busca como: json a interface, generador de interfaces typescript, json2ts, json a tipo typescript, generar tipos desde json.

Herramientas que combinan con: JSON a TypeScript

  • CSV a JSON — Pega CSV o TSV y obtén un array JSON de objetos.
  • Conversor SVG a JSX — Pega un SVG de Figma, Illustrator o de un set de iconos y obtén un componente React (JSX o TSX) listo para usar, con una vista previa segura del icono.
  • cURL a código — Pega un comando curl, ya sea de la documentación de una API o de «Copiar como cURL» en las DevTools de tu navegador, y obtén código listo para ejecutar en seis lenguajes, con las cabeceras, el cuerpo y la autenticación incluidos.
  • Validador JSON Schema — Pega un schema y algunos datos JSON para ver exactamente qué valores incumplen cada regla, o genera un schema inicial a partir de datos de ejemplo.

Preguntas frecuentes

¿Debo usar interface o type para datos JSON?
Cualquiera de los dos sirve para formas de objeto simples. Las interfaces admiten fusión de declaraciones y extends; los alias de tipo también cubren uniones y tipos mapeados. Elige el que prefiera la guía de estilo de tu proyecto: el selector cambia toda la salida.
¿Cómo se detectan las propiedades opcionales?
En arrays de objetos, una propiedad que falta en al menos un elemento se marca como opcional con ?. También puedes hacer opcionales todas las propiedades nulables con la casilla que está debajo de la salida.
¿Por qué una propiedad aparece como null?
Porque era null en todas las muestras donde aparecía, así que no hay información sobre su tipo real. Sustituye null por el tipo esperado, por ejemplo string | null, o pega una muestra donde el valor esté rellenado.
¿Maneja JSON con mucha anidación?
Sí. Cada objeto anidado se convierte en su propia interfaz con nombre, referenciada desde su padre, y las estructuras idénticas se declaran una sola vez.
¿Se envía mi JSON a un servidor?
No. La generación de tipos se hace por completo en tu navegador, así que puedes pegar respuestas de APIs internas con tranquilidad.
¿Puedo instalar JSON a TypeScript como aplicación web y utilizarla sin conexión?
Sí. JSON a TypeScript es una aplicación web instalable (PWA): se instala desde el navegador, no se descarga desde una tienda de aplicaciones. Haz clic en «Instalar aplicación» en la parte superior de esta página en Chrome o Edge (Windows, macOS, Linux, ChromeOS) o, en Android, utiliza «Compartir» → «Añadir a la pantalla de inicio» en iPhone y iPad, o «Archivo» → «Añadir al Dock» en Safari 17+ en un Mac. A continuación, se abrirá en su propia ventana con su propio icono y, como se ejecuta íntegramente en tu navegador, seguirá funcionando sin conexión. Firefox en el ordenador de sobremesa no permite instalar aplicaciones web. Cómo funciona la instalación.

Herramientas relacionadas