Tech

Conversor de JSON a TypeScript

Pegá un JSON y generamos las interfaces de TypeScript: infiere tipos, crea una interfaz separada por cada objeto anidado y detecta arrays. Todo corre en tu navegador.

Instantáneo🔒En tu navegadorSin registro
En vivo

Por qué generar tipos desde un JSON

Cuando consumís una API o cargás un archivo de configuración, el JSON llega sin tipos: para TypeScript es solo un objeto genérico. Escribir a mano las interfaces que describen esa forma es tedioso y propenso a errores, sobre todo cuando hay objetos anidados y arrays. Generarlas automáticamente te da autocompletado, chequeo de tipos y documentación viva de la estructura de datos, sin tener que tipear campo por campo.

Cómo se infieren los tipos

La herramienta recorre el JSON y para cada valor decide el tipo de TypeScript más específico que puede: los textos son string, los números number, los booleanos boolean y null se mantiene como null. Cada objeto anidado se convierte en su propia interfaz con nombre en PascalCase derivado de la clave, y los arrays se tipan mirando su primer elemento: un array de textos es string[], uno de objetos es NombreObjeto[].

Campos opcionales versus requeridos

Un JSON de ejemplo trae todos sus campos presentes, así que la herramienta los genera como requeridos. Pero en la vida real muchas APIs devuelven campos que a veces faltan. Si sabés que un campo puede no venir, marcalo como opcional agregando ? antes de los dos puntos: telefono?: string. Del mismo modo, si un campo puede venir en null además de su tipo, escribí una unión como apodo: string | null.

Uniones y tipos mezclados

Los arrays no siempre son homogéneos. Si un array mezcla números y textos, generar number[] sería incorrecto. En ese caso la herramienta arma una unión que refleja todos los tipos presentes, por ejemplo (number | string)[]. Para un array vacío no hay nada de dónde inferir, así que se usa any[] y queda a tu criterio afinarlo. Las uniones también son útiles a mano cuando un mismo campo puede tomar valores de distintos tipos.

Límites de la inferencia

Inferir tipos desde un único ejemplo tiene fronteras claras. La herramienta no puede saber que un number es en realidad un enum de tres valores, ni que un string sigue el formato de una fecha ISO, ni distinguir un tuple de un array común. Tampoco detecta campos opcionales si tu ejemplo los trae siempre. Tomá el resultado como un punto de partida sólido y refinalo: renombrá interfaces genéricas, agregá opcionales y reemplazá any donde tengas más contexto que el ejemplo.

Referencia: tipo de JSON a tipo de TypeScript

Valor en el JSONTipo de TypeScript
"texto"string
42 / 3.14number
true / falseboolean
nullnull
{ ... }interfaz con nombre (PascalCase)
["x","y"]string[]
[]any[]
[1,"a"](number | string)[]

Preguntas frecuentes

¿Te sirvió este generador?