onlinetools.dev

JSON → tipos TypeScript

Infiere interfaces TypeScript a partir de un ejemplo JSON al instante

Se ejecuta localmente
loading…
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.
Herramientas relacionadas