Convertisseur JSON vers TypeScript
Collez une réponse d’API et obtenez des interfaces ou des alias de type TypeScript prêts à l’emploi, avec types imbriqués, champs optionnels et unions avec null déduits pour vous.
Fonctionne dans le navigateurSans inscriptionAucun envoi de données
Comment utiliser : JSON vers TypeScript
- Collez un exemple JSON, comme une réponse d’API, dans la zone de gauche ou ouvrez un fichier
.json. - Définissez le nom du type racine (par exemple
UserouApiResponse). - Choisissez des déclarations
interfaceoutypeet activezexport,readonlyou les champs tous optionnels. - Choisissez
unknown(plus sûr) ouanypour les valeurs que l’exemple ne permet pas de déduire, comme les tableaux vides et les null. - Copiez le code généré ou téléchargez-le sous forme de fichier
.ts.
Comment les types sont déduits
- Primitifs : chaînes, nombres et booléens deviennent
string,numberetboolean. - Les objets imbriqués deviennent leurs propres interfaces nommées en PascalCase :
billing_addressdevientBillingAddress. - Les tableaux d’objets sont fusionnés en un seul type d’élément, nommé au singulier :
usersdonneUser[]. Une clé absente de certains éléments devient optionnelle (key?:). - Les valeurs null se combinent avec les autres valeurs observées pour la clé :
string | null. Une clé toujoursnullse rabat surunknownouany. - Les tableaux mixtes deviennent des tableaux d’union comme
(number | string)[]. - Les formes identiques sont déclarées une seule fois et réutilisées, et des formes différentes qui partageraient un nom reçoivent un suffixe numérique.
- Les clés qui ne sont pas des identifiants valides, comme
"first-name"ou"2fa", sont mises entre guillemets.
interface ou type
Pour de simples formes d’objets, les deux sont presque interchangeables. Les déclarations interface peuvent être étendues et fusionnées, et donnent des erreurs de compilation un peu plus claires. Les alias type peuvent aussi exprimer des unions et des mapped types. Beaucoup d’équipes utilisent des interfaces pour les modèles d’API et des types pour le reste ; choisissez ce qu’attend votre codebase ou votre linter (@typescript-eslint/consistent-type-definitions).
Obtenir de meilleurs types à partir de votre exemple
Les types ne peuvent être plus complets que l’exemple. Collez une réponse qui inclut les champs optionnels, ou un tableau avec plusieurs éléments variés, pour que le générateur détecte les clés optionnelles et nullables. Les dates et les enums arrivent sous forme de simples chaînes en JSON ; affinez-les ensuite à la main, par exemple status: 'active' | 'disabled'. Pour la validation à l’exécution, associez les types générés à une bibliothèque de schémas comme Zod.
Questions fréquentes
Mon JSON est-il envoyé quelque part ?
Comment les propriétés optionnelles sont-elles détectées ?
?. Avec un seul objet, toutes les clés sont obligatoires, sauf si vous cochez Tout optionnel.Faut-il utiliser <code>unknown</code> ou <code>any</code> ?
unknown est plus sûr : TypeScript vous oblige à affiner la valeur avant de l’utiliser. any désactive la vérification de type pour cette valeur. Ne l’utilisez que si vous comptez affiner les types plus tard.Pourquoi une date ISO est-elle typée <code>string</code> ?
new Date() après l’analyse, changez la propriété en Date dans votre modèle.