JSON vers TypeScript : arrete d'ecrire les interfaces a la main

2024-08-04

Les interfaces ecrites a la main divergent vite des vraies reponses API. Generer des types TypeScript depuis des exemples JSON est standard, a condition de comprendre les regles et limites.

Pourquoi generer des types ?

Detecter fautes de frappe et acces null a la compilation ; utiliser des payloads reels quand OpenAPI manque ou est obsolete.

Exemple de mapping manuel

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

Tableaux imbriques et unions

Les tableaux vides exigent un type d'element manuel ; les tableaux heterogenes deviennent des unions.

Optionnel vs null

Une cle absente (email?) n'est pas identique a une valeur null (email: string | null) ; alignez cela avec la semantique backend.

Outils

quicktype CLI, json-schema-to-typescript et json2ts en ligne pour les besoins ponctuels.

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

Bonnes pratiques

Regenerez plutot que modifier les fichiers generes ; utilisez plusieurs echantillons ; laissez tsc reveler les ruptures d'API.