JSON → types TypeScript
Déduisez des interfaces TypeScript à partir d’un exemple JSON, instantanément
À propos de cet outil
Collez un échantillon JSON — une réponse d’API, un fichier de configuration — et obtenez une interface TypeScript inférée : les objets imbriqués deviennent des types imbriqués, les tableaux reçoivent des types d’éléments (avec des unions pour les contenus mixtes), et les clés qui ne sont pas des identifiants valides sont correctement mises entre guillemets.
Les types générés sont un point de départ, pas un contrat : l’inférence ne voit qu’un échantillon, donc un champ qui se trouve être null dans votre exemple est typé null, et les champs optionnels absents lui sont simplement inconnus. La sortie est volontairement sobre — pas de décorateurs, pas de validation à l’exécution — pour être collée n’importe où et affinée.
Pour les champs qui varient entre requêtes, passez un second échantillon et fusionnez à la main, ou passez à un outillage schema-first (OpenAPI, zod) une fois la forme stabilisée. Pour le quotidien "il me faut juste un type pour cette réponse", un collage suffit.
Questions fréquentes
- Pourquoi mon champ nullable est-il typé simplement null ?
- L’inférence ne voit que l’échantillon collé. Si le champ y était null, null est tout ce qu’elle peut savoir. Remplacez par string | null (ou le vrai type) après génération — ou collez un échantillon où le champ est renseigné.
- Comment les champs optionnels sont-ils gérés ?
- Ils ne sont pas détectés — un échantillon unique ne peut pas distinguer "toujours présent" de "présent cette fois". Les champs absents de l’échantillon sont absents du type. Marquez manuellement les champs optionnels (name?:) là où vous savez que l’API les omet.
- Que produisent les tableaux à types mixtes ?
- Une union : [1, "a"] infère (number | string)[]. Les tableaux vides infèrent unknown[] puisqu’il n’y a aucun élément à inspecter — remplacez par le vrai type d’élément quand vous le connaissez.
- Types inférés ou bibliothèque de schémas comme zod ?
- Les interfaces inférées n’existent qu’à la compilation — elles ne valident rien à l’exécution. Pour les outils internes et le typage rapide, elles sont parfaites ; pour des entrées non fiables à l’exécution, définissez un schéma zod/valibot et dérivez-en le type statique.