Convertir JSON en TypeScript — générer des types
Déduisez des types TypeScript d’un échantillon JSON, objets et tableaux imbriqués compris
Traitement dans le navigateur · aucun envoi de fichier
Déduit les types à partir d’un seul exemple. Les propriétés sont obligatoires, les tableaux vides deviennent unknown[] et des éléments de tableau variés forment des unions. Aucun code de validation à l’exécution n’est généré.
Mode d’emploi
- Collez un échantillon JSON tiré d’une réponse d’API ou d’un fichier de configuration.
- Indiquez un nom de type, par exemple Root ou ApiResponse.
- Copiez l’alias de type exporté dans un fichier TypeScript.
- Vérifiez les propriétés qui pourraient manquer ou valoir null dans les réponses réelles.
Règles d’inférence
Les chaînes deviennent string, les nombres number, les booléens boolean, et null reste null. Toute propriété observée dans un objet est obligatoire. Les noms de propriétés sont mis entre guillemets : les clés en coréen, en chinois, avec des emojis ou de la ponctuation restent donc valides. Les tableaux regroupent les différentes formes déduites dans une union, tandis qu’un tableau vide devient unknown[]. Un objet vide devient Record<string, never>.
Il s’agit d’une inférence à partir d’un échantillon, pas d’une découverte de schéma. Une seule réponse réussie ne peut pas révéler toutes les réponses d’erreur ni tous les champs optionnels. L’outil refuse les clés en double plutôt que d’écarter discrètement la valeur précédente. Les commentaires et les virgules finales ne sont pas du JSON valide. Les noms de type doivent utiliser des lettres ASCII, des chiffres, des tirets bas ou des signes dollar, ne peuvent pas commencer par un chiffre ni être des mots réservés. L’entrée est limitée à un million de caractères et l’inférence à 64 niveaux d’imbrication.
Exemples
{"name":"민수","score":3,"tags":["中文","😀"]} donne string pour name, number pour score et Array[1,"two",null] donne Array<number | string | null>.
Confidentialité
La conversion se fait dans votre navigateur, sans envoi ni enregistrement de l’entrée. Le résultat est un point de départ pour le développement : comparez-le au contrat documenté de l’API avant de vous y fier.
Questions fréquentes
Les objets de formes différentes sont-ils fusionnés en propriétés optionnelles ?
Non. Les éléments d’un tableau aux formes différentes deviennent une union de ces formes. Comparez le résultat avec le contrat réel de l’API.
Quel type reçoit un tableau vide ?
Il devient unknown[], car l’échantillon ne dit rien de ses éléments. Précisez-le à la main si vous connaissez le type attendu.
Les données sont-elles validées à l’exécution ?
Non. L’outil génère un alias de type, pas un analyseur ni une fonction de validation. Les types disparaissent à la compilation de TypeScript.
Quels noms de type puis-je utiliser ?
Des lettres ASCII, des chiffres, des tirets bas ou des signes dollar, sans commencer par un chiffre et sans mot réservé. Root ou ApiResponse conviennent.