Acerca de esta herramienta
Un conversor de JSON a TypeScript lee un documento JSON e infiere un tipo estático para él: los escalares se corresponden con string, number y boolean; los arrays se convierten en T[]; y los objetos anidados se extraen en sus propias interfaces nombradas en lugar de insertarse en línea. Esta herramienta recorre todo el árbol de valores, fusiona las claves de cada objeto de un array (marcando como opcionales las claves ausentes de algunos elementos), deduplica los objetos de forma idéntica para que reutilicen una sola interfaz, y entrecomilla cualquier nombre de propiedad que no sea un identificador válido. Los valores null se unen con el tipo de su vecino cuando se encuentra alguno, los arrays vacíos se convierten en unknown[], y los objetos vacíos se convierten en Record<string, unknown>.
Úsalo para convertir una respuesta de API en modelos tipados sin escribirlos a mano, para generar interfaces a partir de un archivo de fixtures o de configuración, o para comprobar qué forma tiene realmente una carga útil antes de integrarla en tu código. Renombra el tipo raíz, alterna entre una salida interface y type para adaptarte a las convenciones de tu base de código, y el resultado se regenera en vivo a medida que pegas o editas — luego cópialo directamente en un archivo .d.ts o de modelo.
Los tipos generados solo reflejan la muestra que pegas — los campos que resultan estar ausentes o en null en tu ejemplo pueden aparecer igualmente en los datos reales, así que revisa los opcionales y las uniones con null antes de fiarte de ellos.
Preguntas frecuentes
¿Genera interfaces o alias de tipo de TypeScript?
Ambos. El valor por defecto es interface, lo más adecuado para los modelos de objeto que quizá quieras extender o fusionar; cambia a la opción type para emitir en su lugar alias de tipo, que pueden expresar uniones y tuplas que las interfaces no pueden.
¿Cómo gestiona un array de objetos con claves diferentes?
Fusiona las claves de todos los elementos en una sola interfaz. Cualquier clave que falte en al menos un elemento se marca como opcional con un ?, de modo que el tipo generado describe de forma segura todos los elementos del array.
¿Por qué dos objetos anidados comparten el mismo nombre de interfaz?
Los objetos con un conjunto idéntico de campos y tipos de campo se deduplican en una sola interfaz nombrada y se reutilizan, lo que mantiene la salida compacta y evita definiciones duplicadas casi idénticas.