AZ Tools

JSON → Interface TypeScript

Desarrollo

Pega una muestra JSON (respuesta de API, config, fixture) y obtén una interface TypeScript lista para pegar. Los objetos anidados generan su propia interface con el nombre de la clave padre (en PascalCase), los arrays infieren su tipo de elemento, los primitivos quedan como primitivos. El modo merge recorre cada elemento de un array para producir uniones; el modo solo-primero infiere desde el índice cero (más rápido para arrays enormes).

TypeScript
export interface Post {
  id: number;
  title: string;
  tags: string[];
}

export interface Address {
  city: string;
  zip: string;
}

export interface Root {
  id: number;
  name: string;
  active: boolean;
  joinedAt: string;
  roles: string[];
  address: Address;
  posts: Post[];
}

Cómo usar

  1. Pega una muestra JSON.
  2. Indica el nombre del tipo raíz y elige interface o type-alias.
  3. Elige el manejo de arrays — merge (más seguro) o primero (más rápido).
  4. Copia el TypeScript generado.

Preguntas frecuentes

¿Por qué mi array de users produce una interface User?
Las claves en plural (users, posts, tags) se singularizan para el nombre del tipo anidado. 'posts': [...] genera una interface Post, usada como Post[].
¿Qué hace merge vs primero?
Merge recorre todos los elementos del array y une los tipos de campo, así que campos 'opcionales' que faltan en algunos elementos se vuelven 'field?'. Primero solo mira el elemento cero — rápido pero se pierde uniones y opcionalidad.
¿Las fechas se infieren como Date?
No — TypeScript no puede distinguir un string de fecha de otro string en tiempo de compilación. La herramienta los mantiene como 'string' para que la salida sea correcta en strict.
¿Y null?
null se vuelve su propio tipo. Si un campo a veces es null en modo merge, obtienes 'field: string | null' en lugar de 'field: string'.

Herramientas relacionadas