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

TypeScript

Cómo usar: JSON a TypeScript

  1. Pega una muestra de JSON, como una respuesta de API, en el cuadro izquierdo o abre un archivo .json.
  2. Define el nombre del tipo raíz (por ejemplo, User o ApiResponse).
  3. Elige declaraciones interface o type y activa o desactiva export, readonly o todos los campos opcionales.
  4. Elige unknown (más seguro) o any para los valores que la muestra no revela, como arrays vacíos y nulls.
  5. 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, number y boolean.
  • Objetos anidados: se convierten en interfaces propias con nombre en PascalCase, así que billing_address pasa a ser BillingAddress.
  • Arrays de objetos: se fusionan en un único tipo de elemento, nombrado en singular: users da User[]. 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 es null se queda en unknown o any.
  • 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?
No. Los tipos se generan con JavaScript en tu navegador. Las respuestas de API que contienen tokens o datos personales nunca salen de tu dispositivo.
¿Cómo se detectan las propiedades opcionales?
Cuando los objetos de un mismo array tienen claves distintas, las claves que faltan en al menos un objeto se marcan como opcionales con ?. 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>?
JSON no tiene tipo de fecha, así que las fechas viajan como cadenas. Si las conviertes con new Date() después del análisis, cambia la propiedad a Date en tu modelo.
¿Puede manejar JSON grande o muy anidado?
Sí. La generación es lineal respecto al tamaño de la entrada y se ejecuta localmente, así que respuestas de varios megabytes se convierten en mucho menos de un segundo.

Herramientas relacionadas