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
{ "id": 1, "name": "Alice", "email": null }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 typescriptBuenas practicas
Regenera en lugar de editar archivos generados; usa multiples muestras; deja que tsc detecte cambios incompatibles de API.