JSON a TypeScript: deja de escribir interfaces a mano

2024-08-04

Las interfaces escritas manualmente se desalinean de las respuestas reales de API. Generar tipos TypeScript desde JSON de muestra es estandar, si entiendes sus reglas y limites.

Por que generar tipos?

Detecta typos y accesos null en compilacion; usa payloads reales cuando OpenAPI falta o esta desactualizado.

Ejemplo de mapeo manual

JSON
{ "id": 1, "name": "Alice", "email": null }
TypeScript
interface User {
  id: number;
  name: string;
  email: string | null;
}

Arreglos anidados y unions

Los arreglos vacios requieren tipo manual de elemento; los arreglos heterogeneos se convierten en tipos union.

Opcional vs null

Las claves ausentes (email?) no son lo mismo que valores null (email: string | null). Debe alinearse con la semantica del backend.

Herramientas

quicktype CLI, json-schema-to-typescript y json2ts online para casos puntuales.

# npx quicktype sample.json -o types.ts --lang typescript

Buenas practicas

Regenera en lugar de editar archivos generados; usa multiples muestras; deja que tsc detecte cambios incompatibles de API.