Generador JSON → TypeScript Interface
Pega JSON para generar interfaces TypeScript. Divide objetos anidados, infiere unions, opcional null/readonly.
📖 Dónde se suele tropezar
Construye una interface de TypeScript a partir de una muestra JSON, todo en el navegador. Lo importante es que sólo puede describir la forma que aparece en la muestra que pegaste. Los campos opcionales, los valores que pueden ser null y las uniones de varios tipos se tratan como inexistentes si la muestra no contiene un ejemplo de ellos.
| Caso | Qué ocurre | Qué hacer |
|---|---|---|
Un campo con valor null |
Si la muestra sólo enseña "deletedAt": null, no hay forma de saber qué tipo tiene realmente el campo. Sale null o any, y el tipo se vuelve mentira en cuanto llega una fecha en texto. |
Lo más fiable es pegar una muestra combinada de varios registros reales. Si no puedes, corrígelo a mano después: deletedAt: string | null. Con strictNullChecks activado, el compilador te avisará de los que se te pasen. |
| Un array vacío o con un solo elemento | De [] no se infiere nada, así que sale never[] o any[]. Un solo elemento es casi igual de malo: cualquier campo que faltara en ese único registro desaparece del tipo. |
Incluye dos o tres elementos realmente distintos: uno con los campos opcionales presentes, otro sin ellos, otro con el valor más largo. Y recuerda poner ? en las propiedades que de verdad son opcionales. |
| Tomar el tipo generado como fuente de verdad | Una muestra es una observación de una implementación, no la especificación. Tu tipo no se enterará de un campo que la API añada después, y puede llegar a producción sin una propiedad que simplemente no apareció en esa carga concreta. | Si existe un documento OpenAPI o JSON Schema, trátalo como única fuente de verdad y genera desde ahí. El validador de JSON Schema y OpenAPI a curl ayudan mientras pones el esquema en orden. Para una API de terceros sin esquema, valida en la frontera nada más recibir los datos —zod, valibot— y así la divergencia entre tipo y realidad no aparecerá por primera vez en producción. |
Todo número JSON pasa a number, pero un number de JavaScript no guarda con exactitud enteros por encima de 253-1 (9.007.199.254.740.991). Una API con IDs int64 perderá dígitos en silencio y apuntará a otro registro. Acuerda con el servidor devolver los IDs como texto, o recíbelos como bigint. Con las fechas pasa igual: "2026-07-26T00:00:00Z" sólo puede ser string, así que decide desde el principio qué capa convierte a Date y no tendrás que reescribir los tipos después.
📖 Cómo usar
-
1
Pega JSONObjeto único o array
-
2
Ajusta opcionesinterface / type / null / readonly
-
3
Copia o descarga .tsPega directo en código
❓ Preguntas frecuentes
¿Tipos mixtos en array?
¿null vs undefined?
¿Fechas / tipos personalizados?
🐛 ¿Encontró un problema con esta herramienta?
Gratis, sin registro. Incluso solo los pasos para reproducir ayudan. Los informes van directamente al operador y se usan para corregir.
¡Gracias por tu reporte!
Tu reporte llegó al operador y se usará para mejorar.