Cómo convertir JSON en interfaces de TypeScript
- Pega un objeto JSON (o un array de objetos JSON) en la caja de arriba. Una respuesta de API real, un archivo de configuración o un único registro de muestra sirven.
- Elige tu estilo de salida:
interface(por defecto y lo más idiomático para una forma de datos) o un aliastype. - Ajusta las opciones si quieres, marca como opcionales las claves que a veces faltan (
key?:), añade la palabra claveexporty elige si los valores vacíos/null/mixtos se convierten enunknownoany. - Pulsa Procesar JSON a TypeScript y luego Copiar al portapapeles las interfaces generadas, o pega algo nuevo y vuelve a ejecutarlo.
Interfaces reales, no una plantilla plana
Muchas herramientas de “JSON a TypeScript” se limitan a imprimir key: type por cada campo y ahí acaban, lo que se cae en cuanto tu JSON tiene un objeto anidado, un array de registros o un campo que a veces falta. Esta herramienta infiere un tipo real para cada propiedad a partir de tus datos de muestra reales (distinguiendo números de cadenas y booleanos, y fusionando varios elementos de un array en una forma unificada y honesta), y genera una interfaz con nombre propio para cada objeto anidado y array de objetos que encuentra.
Un campo que contiene un objeto plano se convierte en su propia interfaz con nombre, referenciada por el padre (address: Address). Un array de objetos de la misma forma se convierte en un tipo de elemento con nombre (friends: Friend[]), derivando el nombre de la interfaz de una forma singular de la clave. Todo se emite empezando por la raíz para que el archivo se lea de forma natural de arriba abajo, y como TypeScript eleva (hoisting) las declaraciones de tipos, las interfaces se referencian entre sí correctamente sin importar el orden.
Opcional y anulable, inferidos de tus datos
Los dos detalles más útiles (y más a menudo mal resueltos) son la opcionalidad y la anulabilidad, y se tratan por separado porque significan cosas distintas. Cuando pegas un array de objetos, una clave ausente en al menos uno de esos objetos se marca opcional con ?; una clave presente pero null en al menos uno recibe | null. Una clave que a veces falta y a veces es null recibe ambas: key?: string | null. Esto refleja las respuestas de API reales, donde algunos campos solo aparecen bajo ciertas condiciones y otros se anulan explícitamente.
Los nombres de las propiedades quedan exactamente como tu JSON
A diferencia de un modelo generado de Python o Java, una interfaz de TypeScript no tiene mecanismo de alias de claves, el nombre de la propiedad es la clave del JSON. Por eso esta herramienta conserva tus claves literales en lugar de pasarlas a camelCase, porque una propiedad renombrada dejaría de coincidir con tus datos en silencio. Las claves que no son identificadores válidos de JavaScript (un guion, un punto, un dígito inicial, un espacio) se conservan tal cual y se entrecomillan, p. ej. "first-name": string; o "2fa": boolean;.
Tu JSON nunca sale de tu dispositivo
Todo (analizar tu JSON pegado, inferir tipos y generar las interfaces finales) se ejecuta con JavaScript puro dentro de tu propia pestaña del navegador. No hay subida, ni llamada a una API, ni ninguna copia de tus datos almacenada en ningún sitio salvo tu dispositivo.
Usos comunes
- Convertir una respuesta de API real en una interfaz tipada que pegar directamente en un proyecto TypeScript en lugar de escribirla propiedad a propiedad.
- Prototipar un modelo de datos rápido a partir de un archivo JSON de muestra antes de montar el código de fetching y tipado.
- Comprobar cómo se está tipando un campo concreto, incluidos los casos no siempre obvios (una clave que a veces falta, una clave que a veces es null, un objeto anidado, un array de registros).
- ¿Necesitas clases de modelo tipadas para otro lenguaje: Python, Go, Java, Kotlin, C# o Swift? Mira el generador de JSON a Código.
- ¿Solo necesitas formatear, minificar o validar JSON, sin generar código? Mira el Formateador de JSON.
- ¿Quieres recorrer y editar un documento JSON directamente? Mira el Editor de JSON.
- ¿Necesitas validar JSON entrante contra un esquema? Mira el Validador de JSON Schema.

