Blog
Español

Convertir JSON a TypeScript — Generar tipos desde JSON

Infiere tipos TypeScript a partir de muestras JSON, con objetos y arrays anidados

Funciona en tu navegador · no se sube nada

Infiere los tipos a partir de una sola muestra. Las propiedades son obligatorias, los arrays vacíos pasan a unknown[] y los elementos distintos de un array forman uniones. No genera validación en tiempo de ejecución.

Resultado

Cómo se usa

  1. Pega una muestra JSON sacada de la respuesta de una API o de un archivo de configuración.
  2. Escribe un nombre de tipo, como Root o ApiResponse.
  3. Copia el alias de tipo exportado en un archivo TypeScript.
  4. Revisa las propiedades que en respuestas reales podrían faltar o venir como null.

Reglas de inferencia

Las cadenas pasan a string, los números a number, los booleanos a boolean y null se queda como null. Todas las propiedades observadas en un objeto son obligatorias. Los nombres de propiedad van entre comillas, así que las claves en coreano, chino, con emojis o con signos de puntuación siguen siendo válidas. Los arrays combinan en una unión las distintas formas inferidas, mientras que un array vacío pasa a unknown[]. Un objeto vacío se convierte en Record<string, never>.

Se trata de inferir a partir de una muestra, no de descubrir un esquema. Una sola respuesta correcta no puede revelar todas las respuestas de error ni todos los campos opcionales. La herramienta rechaza las claves duplicadas en lugar de descartar sin avisar el valor anterior. Los comentarios y las comas finales no son JSON válido. Los nombres de tipo deben usar letras ASCII, dígitos, guiones bajos o signos de dólar, no pueden empezar por un dígito ni ser palabras reservadas. La entrada admite como máximo un millón de caracteres y la inferencia llega hasta 64 niveles de anidamiento.

Ejemplos

{"name":"민수","score":3,"tags":["中文","😀"]} da string para name, number para score y Array para tags. [1,"two",null] da Array<number | string | null>.

Privacidad

La conversión se hace en tu navegador, sin subir ni guardar la entrada. El resultado es un punto de partida para el desarrollo: compáralo con el contrato documentado de la API antes de fiarte de él.

Preguntas frecuentes

¿Se fusionan los objetos con formas distintas en propiedades opcionales?

No. Los elementos de un array con formas distintas se convierten en una unión de esas formas. Revisa el resultado frente al contrato real de la API.

¿Qué tipo recibe un array vacío?

Se convierte en unknown[], porque la muestra no aporta ninguna pista sobre sus elementos. Concrétalo a mano cuando sepas qué tipo se espera.

¿Valida los datos en tiempo de ejecución?

No. Genera un alias de tipo, no un analizador ni una función de validación. Los tipos desaparecen al compilar TypeScript.

¿Qué nombres de tipo puedo usar?

Letras ASCII, dígitos, guiones bajos o signos de dólar, sin empezar por un dígito y sin usar palabras reservadas. Root o ApiResponse son nombres válidos.

¿Echas en falta alguna herramienta?