JSON en interfaces TypeScript

Collez un échantillon JSON d'une réponse d'API ou d'un fichier de réglages. L'outil écrit les interfaces TypeScript qui le décrivent, avec un nom pour chaque objet imbriqué. Rien de ce que vous collez ne quitte votre navigateur.

Gratuit Fonctionne dans votre navigateur Vérifié le mardi 10 novembre 2026

Un objet ou un tableau JSON typique. Plusieurs éléments de tableau sont fusionnés en une seule interface.

Un nom simple, comme Root, Product ou ApiResponse.

Cochez-le lorsque les types sont importés depuis un autre fichier.

Résultat

Interfaces TypeScript — Copiez le code, ou téléchargez-le sous le nom types.ts.
Déclarations — Les interfaces et alias de type du code.
Interfaces TypeScript

Cet outil fonctionne dans votre navigateur. Ce que vous saisissez ne nous est pas envoyé.

Mode d'emploi

  1. Collez une valeur JSON typique dans Échantillon JSON. Les types apparaissent pendant la saisie.
  2. Saisissez un nom sous Nom de l'interface racine pour l'objet le plus extérieur, comme Product.
  3. Décochez Écrire export devant chaque déclaration si les types restent dans le même fichier.
  4. Copiez les Interfaces TypeScript, ou téléchargez-les sous le nom types.ts.

Comment les types sont déduits

Chaque objet JSON devient une interface. Son nom vient de la clé qui le contient, en PascalCase : la clé first-name donne FirstName. Les éléments d'un tableau prennent le singulier de la clé du tableau, si bien que items donne Item. Lorsqu'un nom est déjà pris, le nom du parent est placé devant lui.

Les chaînes, les nombres et les booléens deviennent string, number et boolean. null s'écrit null dans une union, comme number | null. Un tableau de valeurs devient un type suivi de [] ; un tableau vide devient unknown[], car l'échantillon ne dit pas ce qu'il contient.

clé "first-name" -> propriété "first-name": string;   items -> Item[]

Plusieurs échantillons dans un tableau

Une liste d'objets est lue comme une seule forme. Une clé présente dans chaque élément est obligatoire ; une clé absente de certains éléments est écrite avec un point d'interrogation, comme optionnelle. Une clé qui porte des types différents selon les éléments devient une union, avec string d'abord, puis number, boolean, l'interface, le tableau et null.

Un échantillon ne montre que les valeurs qu'il contient. Une clé qu'une vraie API omet parfois peut manquer dans un seul exemple : ajoutez donc un second élément qui la contient si vous voulez que le type la montre comme optionnelle.

Exemple détaillé : l'échantillon par défaut

L'échantillon par défaut est un objet à cinq clés. Sa clé owner contient un objet, donc le code a une interface Owner. Sa clé items est un tableau de deux objets, donc le code a une interface Item. Les clés sku et price figurent dans les deux éléments et sont obligatoires ; la clé discount vaut null dans un élément et un nombre dans l'autre, donc elle vaut number | null ; la clé note n'apparaît que dans un élément et est optionnelle.

Le résultat compte trois déclarations : Root, Owner et Item, et le compteur affiche 3.

Questions fréquentes

Pourquoi un champ est-il marqué d'un point d'interrogation ?

Le champ manque dans au moins un objet de l'échantillon. Un tel champ peut être absent des données réelles : TypeScript le traite donc comme optionnel, et le code qui le lit doit le vérifier d'abord.

Pourquoi mon champ affiche-t-il une union comme string | number ?

Des éléments différents portent des types différents pour cette clé. Le type liste tous les types vus dans l'échantillon, si bien que le code doit vérifier lequel il a avant d'utiliser la valeur.

L'outil vérifie-t-il mes vraies données d'API ?

Non. Il écrit les types de l'échantillon que vous collez. Un échantillon d'un seul élément ne peut pas montrer un champ qui n'apparaît que plus tard : utilisez donc une réponse typique avec plusieurs éléments lorsque c'est possible.

Pourquoi certains noms de propriété sont-ils entre guillemets ?

Un nom qui n'est pas un identifiant simple, comme first-name ou 2fa, doit être mis entre guillemets en TypeScript. Les noms qui sont des identifiants valides sont écrits sans guillemets.

Puis-je utiliser le résultat avec JavaScript ?

Les interfaces sont propres à TypeScript. Elles sont supprimées à la compilation : un projet JavaScript doit donc vérifier le JSON autrement, ou passer par une étape de compilation TypeScript.

Sources

Chiffres et texte vérifiés pour la dernière fois le mardi 10 novembre 2026.

Nous utilisons des cookies nécessaires au fonctionnement du site. Avec votre accord, Google utilise aussi des cookies publicitaires pour afficher des annonces personnalisées. Si vous les refusez, vous voyez toujours des annonces, mais elles ne sont pas personnalisées.