JSON → tipos TypeScript
Infiere interfaces TypeScript a partir de un ejemplo JSON al instante
Sobre esta herramienta
Pega una muestra de JSON — una respuesta de API, un archivo de configuración — y obtén una interfaz TypeScript inferida de ella: los objetos anidados se convierten en tipos anidados, los arrays reciben tipos de elemento (con uniones para contenidos mixtos), y las claves que no son identificadores válidos se entrecomillan correctamente.
Los tipos generados son un punto de partida, no un contrato: la inferencia ve una sola muestra, así que un campo que casualmente es null en tu ejemplo se tipa como null, y los campos opcionales que estaban ausentes simplemente le son desconocidos. La salida es deliberadamente simple — sin decoradores, sin validación en tiempo de ejecución — para que puedas pegarla en cualquier parte y refinarla.
Para campos que varían entre peticiones, pasa una segunda muestra y fusiona a mano, o gradúate a herramientas schema-first (OpenAPI, zod) cuando la forma se estabilice. Para el momento diario de "solo necesito un tipo para esta respuesta", un pegado basta.
Preguntas frecuentes
- ¿Por qué mi campo nullable se tipa solo como null?
- La inferencia solo ve la muestra que pegaste. Si el campo era null ahí, null es todo lo que puede saber. Cámbialo a string | null (o al tipo real que sea) tras la generación — o pega una muestra donde el campo esté poblado.
- ¿Cómo se manejan los campos opcionales?
- No se detectan — una sola muestra no puede distinguir "siempre presente" de "presente esta vez". Los campos ausentes de la muestra están ausentes del tipo. Marca los campos como opcionales (name?:) manualmente donde sepas que la API los omite.
- ¿Qué producen los arrays de tipos mixtos?
- Una unión: [1, "a"] infiere (number | string)[]. Los arrays vacíos infieren unknown[] porque no hay elemento que inspeccionar — reemplázalo con el tipo de elemento real cuando lo conozcas.
- ¿Debería usar tipos inferidos o una librería de esquemas como zod?
- Las interfaces inferidas son solo de tiempo de compilación — no validan nada en tiempo de ejecución. Para herramientas internas y tipado rápido son perfectas; para entrada no confiable en tiempo de ejecución, define un esquema zod/valibot y deriva el tipo estático de él.