Mode d’emploi
- Collez du JSON dans la zone de saisie, ouvrez un fichier .json ou essayez l'exemple.
- Définissez le nom du type racine, par exemple Order ou ApiResponse.
- Choisissez les déclarations interface ou type et indiquez s'il faut ajouter export et readonly.
- Copiez le TypeScript généré ou téléchargez-le sous le nom types.ts.
Fonctionnement
Le générateur parcourt tout le document JSON et enregistre les types de valeurs trouvés à chaque emplacement. Chaque objet JSON devient sa propre déclaration nommée. Le nom provient de la clé de propriété écrite en PascalCase : ainsi, « shipping_address » devient ShippingAddress. Les éléments d’un tableau sont nommés d’après le singulier de la clé : « items » donne Item, « categories » donne Category, et les clés qui ne ressemblent pas à des pluriels reçoivent le suffixe « Item ».
Tous les objets d’un même tableau sont fusionnés en une seule interface. Si une clé n’apparaît que dans certains d’entre eux, elle est marquée comme optionnelle avec « ? ». Si une valeur a des types différents à différents endroits, le type est une union telle que string | number. null est conservé comme type à part entière : un champ qui vaut parfois null devient donc string | null. Un tableau vide devient unknown[], car il n’y a rien à déduire. Deux objets ayant exactement les mêmes propriétés et les mêmes types partagent une seule interface au lieu de produire des doublons. Les clés qui ne sont pas des identifiants valides, comme « first-name », sont mises entre guillemets.
Le résultat décrit uniquement l’échantillon que vous collez. Un champ optionnel ou pouvant être null dans la réalité sera obligatoire et non null si votre échantillon ne le montre pas, et les dates apparaissent comme de simples chaînes. Vérifiez les types par rapport à la documentation de votre API avant de vous y fier.
Exemples
Typer une réponse d’API
Collez une commande de l’API de votre boutique avec le nom racine Order. Vous obtenez les interfaces Order, Customer, Item et Shipping, avec note?: string sur Item car un seul des deux articles possède une note.
Configuration en lecture seule
Collez un config.json, cochez « Rendre les propriétés en lecture seule » et collez le résultat dans config.d.ts, afin que les écritures accidentelles dans la configuration soient détectées par le compilateur.
Tableau au niveau racine
Un endpoint de liste renvoie [{…}, {…}]. Avec le nom racine Product, la sortie commence par « export type Product = ProductItem[]; » suivie de l’interface ProductItem.
Foire aux questions
Pourquoi un champ est-il optionnel dans le résultat ?
Parce qu'au moins un objet du même tableau ne possède pas cette clé. Si tous les objets l'ont, elle est obligatoire. Collez plusieurs enregistrements pour obtenir des champs optionnels plus précis.
Pourquoi une date est-elle typée comme chaîne ?
JSON ne possède pas de type date, les dates sont donc représentées comme des chaînes. Le générateur ne devine pas les formats. Modifiez le type vous-même si votre code les convertit en objets Date.
Quelle est la différence entre une interface et un type ?
Pour la forme des objets, les deux fonctionnent presque de la même façon. Les interfaces peuvent être étendues et fusionnées par des déclarations ultérieures ; les alias de type ne peuvent pas être rouverts. Choisissez le style déjà utilisé dans votre base de code.
Peut-il générer une validation à l'exécution, comme des schémas Zod ?
Non. Il produit uniquement des déclarations TypeScript, qui sont vérifiées à la compilation et ne valident pas les données à l'exécution.
Confidentialité
Votre JSON est analysé uniquement dans votre navigateur. Rien n'est envoyé, stocké ni inclus dans les statistiques.