Générateur d’interfaces TypeScript à partir de JSON

Collez un exemple JSON, comme une réponse d’API ou un fichier de configuration, et obtenez des interfaces TypeScript prêtes à l’emploi, avec types imbriqués, propriétés optionnelles et types union.

Mis à jour le
Déclarer comme
Tableaux

Vos données ne quittent jamais votre ordinateur. Tout le traitement se fait localement dans votre navigateur.

Comment utiliser : JSON vers TypeScript

  1. Collez un exemple JSON représentatif, par exemple une réponse copiée depuis l’onglet réseau de votre navigateur.
  2. Définissez le nom du type racine (par exemple User ou ApiResponse).
  3. Choisissez interface ou type, la syntaxe des tableaux, et si vous souhaitez exporter les déclarations ou marquer les propriétés en lecture seule.
  4. Copiez le code généré dans un fichier .ts ou téléchargez-le.

À quoi sert un convertisseur JSON vers TypeScript ?

Il déduit des types statiques à partir de données d’exemple. Au lieu d’écrire à la main une interface pour chaque réponse d’API, vous collez une réponse réelle et obtenez les déclarations TypeScript correspondantes : une interface nommée par objet imbriqué, des tableaux typés et des unions lorsque les valeurs diffèrent. C’est le moyen le plus rapide d’obtenir l’autocomplétion et les vérifications à la compilation pour les données reçues d’une API REST, d’un webhook ou d’un fichier de configuration JSON.

Comment les types sont déduits

Valeur JSONType TypeScript
"texte"string
42, 3.14number
trueboolean
nullnull (combiné à d’autres types, par exemple string | null)
{ … }Une interface nommée (clé profile → Profile)
["a", "b"]string[]
[1, "deux"](number | string)[]
[]unknown[] (aucun exemple pour déduire le type)

Les tableaux d’objets sont fusionnés

Lorsqu’un tableau contient plusieurs objets, le générateur les fusionne en une seule interface au lieu de ne prendre que le premier élément. Une clé présente dans certains éléments mais pas dans d’autres devient optionnelle (archived?: boolean), et une clé dont les valeurs diffèrent d’un élément à l’autre reçoit un type union (license: string | null). Les interfaces des éléments de tableau sont nommées d’après le singulier de la clé : repos → Repo, categories → Category. Les structures identiques trouvées à différents endroits sont déclarées une seule fois et réutilisées.

interface ou type ?

Pour les structures d’objets, les deux sont presque interchangeables. Les déclarations interface peuvent être étendues avec extends et fusionnées en les redéclarant, et elles produisent généralement des messages d’erreur plus clairs ; les alias type permettent d’exprimer des unions, des tuples et des types mappés. Beaucoup d’équipes utilisent les interfaces pour les modèles de données : choisissez celui qui correspond à vos règles de lint (par exemple @typescript-eslint/consistent-type-definitions).

Limites de la déduction : relisez le résultat

Un exemple montre uniquement ce qui était présent. Un champ valant null dans votre exemple sera typé null ; modifiez-le avec le type réel (par exemple string | null). Les dates arrivent sous forme de chaînes ISO et sont typées string, car JSON ne possède pas de type date. Les clés qui ne sont pas des identifiants valides, comme social-links, sont automatiquement entre guillemets. Pour valider à l’exécution des données non fiables, associez ces types à un validateur de schéma comme Zod. Commencez par nettoyer votre exemple avec le Formateur JSON, ou convertissez d’abord vos configurations YAML avec YAML vers JSON avant de générer les types.

Aussi recherché comme : json to typescript, générer interface typescript depuis json, convertisseur json typescript, json to interface, générer types typescript json, json2ts.

Outils complémentaires : JSON vers TypeScript

  • CSV vers JSON — Collez du CSV ou du TSV pour obtenir un tableau JSON d'objets.
  • SVG vers JSX — Collez un SVG issu de Figma, Illustrator ou d’une bibliothèque d’icônes et obtenez un composant React (JSX ou TSX) prêt à l’emploi, avec un aperçu sécurisé de l’icône.
  • cURL vers code — Collez une commande curl, issue de la documentation d’une API ou de l’option « Copier en tant que cURL » des outils de développement de votre navigateur, et obtenez du code prêt à l’emploi pour six langages, avec les en-têtes, le corps de requête et l’authentification repris à l’identique.
  • Validateur JSON Schema — Collez un schéma et du JSON pour voir précisément quelles valeurs enfreignent quelle règle, ou générez un schéma de départ à partir de données d'exemple.

Questions fréquentes

Faut-il utiliser interface ou type pour des données JSON ?
Les deux conviennent pour des structures d’objets simples. Les interfaces prennent en charge la fusion de déclarations et extends ; les alias de type couvrent aussi les unions et les types mappés. Choisissez celui que préfère le guide de style de votre projet : le sélecteur modifie l’ensemble du résultat.
Comment les propriétés optionnelles sont-elles détectées ?
Dans les tableaux d’objets, une propriété absente d’au moins un élément est marquée optionnelle avec ?. Vous pouvez aussi rendre optionnelles toutes les propriétés nullables grâce à la case à cocher sous le résultat.
Pourquoi une propriété est-elle typée null ?
Parce qu’elle valait null dans chaque exemple où elle apparaissait, il n’y a donc aucune information sur son type réel. Remplacez null par le type attendu, par exemple string | null, ou collez un exemple où la valeur est renseignée.
Le convertisseur gère-t-il les JSON très imbriqués ?
Oui. Chaque objet imbriqué devient sa propre interface nommée, référencée depuis son parent, et les structures identiques ne sont déclarées qu’une seule fois.
Mon JSON est-il envoyé à un serveur ?
Non. La génération des types se fait entièrement dans votre navigateur : vous pouvez donc coller sans risque les réponses d’API internes.
Puis-je installer JSON vers TypeScript en tant qu’application web et l’utiliser hors ligne ?
Oui. JSON vers TypeScript est une application web installable (PWA) : elle s’installe depuis votre navigateur, sans passer par une boutique d’applications. Cliquez sur « Installer l’application » en haut de cette page dans Chrome ou Edge (Windows, macOS, Linux, ChromeOS) ; sur Android, utilisez « Partager » → « Ajouter à l’écran d’accueil » sur iPhone et iPad ; ou « Fichier » → « Ajouter au Dock » dans Safari 17+ sur Mac. L’application s’ouvre alors dans sa propre fenêtre avec sa propre icône, et comme elle s’exécute entièrement dans votre navigateur, elle continue de fonctionner hors ligne. Firefox sur ordinateur de bureau ne permet pas d’installer d’applications web. Comment fonctionne l’installation.

Outils similaires