JSON vers TypeScript
Transformez une charge utile d’exemple en interfaces TypeScript — les objets imbriqués obtiennent leur propre type, les tableaux mixtes deviennent des unions, et les clés absentes de certaines lignes ressortent optionnelles.
JSON
TypeScript
À propos de cet outil
Typer une réponse d’API à la main est fastidieux et facile à rater subtilement. Collez une charge utile réelle et les interfaces correspondantes sont générées : chaque objet imbriqué devient son propre type nommé, les tableaux d’objets sont fusionnés en une seule forme pour qu’une clé absente de certaines lignes soit marquée optionnelle, et les tableaux mixtes deviennent des unions. Les formes identiques sont émises une fois et partagées. Ce que l’outil ne peut pas faire, c’est deviner au-delà de l’exemple : un champ qui vaut null dans votre échantillon est typé null, car rien dans les données ne dit le contraire.
Comment l’utiliser
- 1Coller une réponse JSON représentative — plus un tableau a de lignes, meilleure est la détection des champs optionnels.
- 2Nommer le type racine et choisir interface ou type, selon votre base de code.
- 3Copier le résultat dans un fichier .d.ts, puis élargir tout champ que l’échantillon décrivait trop étroitement.
Questions fréquentes
›Comment les champs optionnels sont-ils déterminés ?
En comparant les objets d’un tableau. Si une clé est présente dans certains éléments et absente d’autres, elle est marquée optionnelle ; une clé présente partout est obligatoire. Un objet seul ne fournit aucun indice dans un sens ou dans l’autre : toutes ses clés ressortent obligatoires.
›Pourquoi un champ est-il typé null plutôt que string | null ?
Parce que null est tout ce que l’échantillon a montré. L’inférence ne peut décrire que les données reçues — élargissez ces champs à la main, ou collez un échantillon contenant une valeur renseignée.
›Pourquoi deux clés différentes partagent-elles une interface ?
Les formes identiques sont émises une seule fois et réutilisées, ce qui garde la sortie courte. Renommez l’interface si ce sont conceptuellement deux types distincts qui se ressemblent aujourd’hui par hasard.
›interface ou type — lequel choisir ?
Les interfaces peuvent être étendues et fusionnées par déclaration, ce qui convient aux formes d’objets et aux API publiques. Les alias de type couvrent aussi les unions et les types mappés. Pour de simples formes de charges utiles générées, les deux se comportent pareil : prenez ce que votre base de code utilise déjà.
›Cela valide-t-il les données à l’exécution ?
Non. Les types TypeScript sont effacés à la compilation : rien ne vérifie qu’une réponse d’API correspond vraiment. S’il vous faut des garanties à l’exécution, générez plutôt un schéma avec Zod ou Valibot et dérivez-en le type.