Convertidor de JSON a TypeScript
Pega una respuesta de API y obtén interfaces o alias de tipo de TypeScript listos para usar, con tipos anidados, campos opcionales y uniones con null inferidos automáticamente.
Funciona en tu navegadorSin registroNo se sube nada
Cómo usar: JSON a TypeScript
- Pega una muestra de JSON, como una respuesta de API, en el cuadro izquierdo o abre un archivo
.json. - Define el nombre del tipo raíz (por ejemplo,
UseroApiResponse). - Elige declaraciones
interfaceotypey activa o desactivaexport,readonlyo todos los campos opcionales. - Elige
unknown(más seguro) oanypara los valores que la muestra no revela, como arrays vacíos y nulls. - Copia el código generado o descárgalo como archivo
.ts.
Cómo se infieren los tipos
- Primitivos: las cadenas, números y booleanos se asignan a
string,numberyboolean. - Objetos anidados: se convierten en interfaces propias con nombre en PascalCase, así que
billing_addresspasa a serBillingAddress. - Arrays de objetos: se fusionan en un único tipo de elemento, nombrado en singular:
usersdaUser[]. Una clave que falta en algunos elementos pasa a ser opcional (key?:). - Valores null: se combinan con los demás valores vistos para esa clave:
string | null. Una clave que solo esnullse queda enunknownoany. - Arrays mixtos: se convierten en arrays de unión como
(number | string)[]. - Formas idénticas: se declaran una vez y se reutilizan, y las formas distintas que compartirían nombre reciben un sufijo numérico.
- Claves que no son identificadores válidos, como
"first-name"o"2fa", se escriben entre comillas.
interface frente a type
Para formas de objeto simples, ambos son casi intercambiables. Las declaraciones interface se pueden extender y fusionar, y dan errores de compilación algo más claros. Los alias type también pueden expresar uniones y mapped types. Muchos equipos usan interfaces para los modelos de API y types para todo lo demás; elige lo que espere tu código o tu linter (@typescript-eslint/consistent-type-definitions).
Obtén mejores tipos con tu muestra
Los tipos solo pueden ser tan completos como la muestra. Pega una respuesta que incluya los campos opcionales, o un array con varios elementos diferentes, para que el generador detecte las claves opcionales y nullables. Valores como fechas y enums llegan como simples cadenas en JSON; acótalos a mano después, por ejemplo status: 'active' | 'disabled'. Para validación en tiempo de ejecución, combina los tipos generados con una librería de esquemas como Zod.
Preguntas frecuentes
¿Se sube mi JSON?
¿Cómo se detectan las propiedades opcionales?
?. Con un solo objeto, todas las claves son obligatorias, salvo que marques Todo opcional.¿Debo usar <code>unknown</code> o <code>any</code>?
unknown es más seguro: TypeScript te obliga a acotar el valor antes de usarlo. any desactiva la comprobación de tipos para ese valor. Úsalo solo si piensas afinar los tipos más adelante.¿Por qué una fecha ISO se tipa como <code>string</code>?
new Date() después del análisis, cambia la propiedad a Date en tu modelo.