JSON vers TypeScript
Déduisez localement des interfaces TypeScript à partir d'un exemple JSON. Ce générateur gratuit gÚre objets imbriqués, tableaux et unions sans envoyer vos données.
đ S'exĂ©cute entiĂšrement dans votre navigateur â rien n'est envoyĂ©Ce que fait JSON vers TypeScript
JSON vers TypeScript lit un exemple JSON et en déduit des interfaces TypeScript fortement typées décrivant sa structure. L'outil parcourt la valeur de façon récursive : les objets deviennent des interfaces nommées, les valeurs primitives deviennent les types correspondants string, number, boolean ou null, et les tableaux deviennent des types d'élément entourés de crochets. Lorsqu'un tableau contient des éléments de types différents, le générateur les fusionne en une union afin que le résultat reste compatible avec les données d'origine. C'est utile pour consommer une API sans types publiés, pour ajouter de la sûreté de typage à une charge utile héritée ou pour transformer un jeu de données rapide en modÚle réutilisable.
Les tableaux d'objets sont traités avec soin. PlutÎt que de ne typer que le premier élément, l'outil fusionne tous les objets du tableau en une seule interface, en rassemblant l'union des clés. Les clés absentes de certains éléments sont marquées comme facultatives par un point d'interrogation final, ce qui reflÚte la maniÚre dont les réponses réelles n'incluent des champs que lorsqu'ils sont renseignés. Les objets imbriqués sont promus en interfaces nommées à partir du nom de la propriété, de sorte que le résultat ressemble à des modÚles écrits à la main plutÎt qu'à un seul type profondément imbriqué.
Un flux de travail privé dans le navigateur
Toute l'analyse et l'inférence se déroulent dans votre navigateur grùce à du JavaScript cÎté client. L'outil n'envoie à aucun serveur votre JSON, vos réponses d'API, vos identifiants, vos jetons ou vos exemples proches de données clients, et n'exige aucun compte. Ce modÚle purement local est important, car les données collées dans un générateur de types sont souvent une vraie réponse de production capturée lors du débogage. Garder le travail sur votre machine réduit les risques et rend le résultat instantané, puisqu'il n'y a aucun aller-retour réseau entre le collage et la sortie.
L'interface rassemble l'entrĂ©e JSON, le nom racine et les interfaces gĂ©nĂ©rĂ©es afin que vous puissiez vĂ©rifier l'infĂ©rence avant de la copier. Les rĂ©sultats doivent toutefois ĂȘtre relus avant d'ĂȘtre intĂ©grĂ©s : un seul exemple ne peut pas rĂ©vĂ©ler tous les champs facultatifs, valeurs nullables ou Ă©numĂ©rations que l'API rĂ©elle peut renvoyer. Ălargissez donc les types lorsque votre connaissance du domaine indique qu'un champ peut ĂȘtre absent ou prendre plus de formes que l'exemple n'en montre.
Conseils pratiques
Fournissez l'exemple le plus complet dont vous disposez, idĂ©alement avec des champs facultatifs renseignĂ©s et un tableau de plus d'un Ă©lĂ©ment, afin que la logique de fusion puisse dĂ©tecter unions et champs facultatifs. Renommez l'interface racine pour qu'elle corresponde Ă votre modĂšle de domaine avant de gĂ©nĂ©rer. AprĂšs la copie, envisagez de resserrer les types infĂ©rĂ©s trop largement : remplacez les champs string gĂ©nĂ©riques par des unions de littĂ©raux pour les Ă©numĂ©rations connues, marquez les identifiants comme types « brandĂ©s » si votre code les utilise, et vĂ©rifiez que tout champ typĂ© null par l'infĂ©rence ne doit pas plutĂŽt ĂȘtre une union nullable. L'infĂ©rence dans le navigateur est excellente pour un premier brouillon rapide, mais les types finaux doivent reflĂ©ter le contrat dont votre application dĂ©pend rĂ©ellement.
Comment utiliser
- Collez le JSONAjoutez un exemple représentatif d'objet ou de tableau JSON.
- Nommez la racineChoisissez un nom d'interface racine, puis générez les interfaces.
- Copiez les interfacesVérifiez le TypeScript inféré, puis copiez-le ou téléchargez-le.