Saltar al contenido
EVOA Toolbox

JSON a TypeScript

Genera interfaces o tipos de TypeScript a partir de un ejemplo de JSON. Admite objetos anidados, arreglos, uniones, null y propiedades opcionales.

Se procesa en local, en tu navegador. Tu texto no se sube.

Cargando herramienta…

Qué hace esta herramienta

Pega un ejemplo de respuesta de API o un archivo de configuración y obtén declaraciones de TypeScript listas para usar. Los objetos anidados se convierten en interfaces con nombre propio, los arreglos se convierten en arreglos tipados y los valores null se tipan como null para que veas dónde puede faltar un campo.

Cuando un arreglo contiene varios objetos, sus formas se combinan: las propiedades presentes en todos los elementos siguen siendo obligatorias y las que solo aparecen en algunos pasan a ser opcionales (name?: tipo). Los arreglos con valores de distintos tipos producen uniones como (string | number)[]. Los nombres de propiedad que no son identificadores válidos, como first-name, se escriben entre comillas.

Tú eliges el nombre del tipo raíz, si la salida es interface o alias de tipo, si se exporta y si las propiedades se marcan como readonly. La inferencia se ejecuta en tu navegador sobre el ejemplo que le des, así que el resultado solo es tan completo como ese ejemplo: revísalo y flexibiliza los tipos donde tu API pueda devolver otras formas.

Cómo usarla

  1. 1Pega un ejemplo de JSON representativo (cuanto más variado sea, mejor se detectan los campos opcionales).
  2. 2Define el nombre del tipo raíz y elige interface o type.
  3. 3Activa o desactiva export y readonly para ajustarte al estilo de tu código.
  4. 4Copia el código generado o descárgalo como types.ts y luego revisa los tipos de los campos con el contrato de tu API.

Formatos compatibles

Entrada: JSON estricto. Salida: declaraciones de TypeScript (.ts) con interface o alias de tipo.

Privacidad

Esta herramienta se ejecuta en tu navegador. Los datos que proporcionas se procesan en tu dispositivo y no se envían a nuestros servidores.

Limitaciones

  • Los tipos se infieren a partir de un único ejemplo. Un campo que en tu ejemplo siempre es una cadena puede ser un número o null en otros casos.
  • Un arreglo vacío se tipa como unknown[] porque no hay nada de qué inferir.
  • Los mapas con forma de objeto (por ejemplo, con ID como claves) se generan como propiedades fijas, no como Record<string, T>. Conviértelos a mano.
  • Las fechas, los UUID y los enum aparecen como simples string o number; la herramienta no puede saber qué significan.
  • Todos los números se tipan como number, incluidos los valores superiores a 2^53 que JSON.parse redondea.

Preguntas frecuentes

¿Cómo se decide qué propiedades son opcionales?

Solo comparando los objetos dentro del mismo arreglo (o repetidos en la misma posición). Si una propiedad falta en al menos un elemento, se marca como opcional. Una propiedad que existe con valor null se tipa como null (o una unión con null), no como opcional.

¿Interface o type: cuál elijo?

Para formas de objeto simples son intercambiables. Las interfaces se pueden extender y fusionar; los alias de tipo funcionan mejor con uniones y tipos mapeados. Elige la que ya use tu código.

¿Por qué dos objetos anidados reciben el mismo nombre de tipo?

Los objetos con estructura idéntica se reutilizan como una única declaración. Cuando dos formas distintas recibirían el mismo nombre, la segunda lleva un sufijo numérico como Item2.

¿Se sube mi JSON?

No. Los tipos se generan en tu navegador.

Herramientas relacionadas