Sobre esta herramienta
Escribir a mano interfaces TypeScript para que coincidan con una respuesta de API es trabajo mecánico y fácil de equivocar sutilmente. Pega aquí un JSON de muestra y obtén las interfaces correspondientes al instante. Los objetos anidados se extraen en sus propias interfaces con nombre, los arrays de objetos se fusionan para que las claves ausentes en algunas entradas sean opcionales, y los valores con más de un tipo se vuelven uniones.
Funciona por completo en tu navegador con un inferidor ligero: tu JSON nunca se sube. Pega, ajusta el nombre raíz si quieres y copia tipos listos para usar en tu proyecto.
Preguntas frecuentes
¿Se sube a algún sitio mi JSON?
No. El análisis y la inferencia de tipos se ejecutan enteramente en el JavaScript de tu navegador — tu JSON nunca sale de tu dispositivo.
¿Cómo maneja un array donde los objetos tienen campos distintos?
Combina las claves de todos los objetos del array en una sola interfaz; cualquier clave que no esté presente en todos ellos se marca como opcional con `?` en lugar de descartarse.
¿Qué pasa con un array de tipos mixtos, como números y cadenas?
Genera un tipo de array de unión como `(string | number)[]`, de modo que la forma sigue reflejando cada valor que realmente aparece en la muestra.
¿Puedo generar alias de tipo en lugar de interfaces?
Sí, activa 'as type' para convertir cada `interface Name {}` generado en `type Name = {}` — útil si tu código prefiere los alias de tipo.
¿Qué pasa si pego un JSON no válido?
La herramienta muestra un mensaje de error con la línea y columna exactas del problema y te permite saltar directamente a él, en lugar de un mensaje genérico de 'JSON no válido'.
¿Maneja objetos anidados y arrays, no solo JSON plano?
Sí. Un objeto anidado se convierte en su propia interfaz con nombre, tomado de la clave padre (así `profile: {...}` genera una interfaz `Profile`), y los nombres de array se singularizan (`roles` → `Role[]`). Un array de objetos genera una única interfaz compartida por todos sus elementos, con `?` en los campos que no están en todos — no una interfaz distinta por cada elemento.