Convertir JSON en types TypeScript — Numio
Générez des interfaces ou des alias de type TypeScript à partir d’un échantillon JSON, comme une réponse d’API. L’imbrication, null et les tableaux mixtes sont gérés, et la conversion s’exécute dans votre navigateur.
Créer des types TypeScript nommés pour une réponse d’API.
Converted in your browser. Null stays a value type; ? marks a field missing from some objects in an array. Empty arrays use unknown elements.
JSON
TypeScript
Quand l’utiliser
- Créer des types TypeScript nommés pour une réponse d’API.
- Comparer plusieurs objets d’un tableau pour repérer les types divergents et les champs optionnels.
Mode d’emploi
- Collez du JSON réel ou chargez l’un des exemples. Charger un exemple remplace votre saisie.
- Définissez le nom du type racine et choisissez interface (les objets imbriqués deviennent des types séparés) ou type (un seul alias de type avec les objets imbriqués inline).
- Vérifiez null, les champs optionnels (?) et les unions string/number, puis copiez les types.
Entrée JSON
[{"id":1,"name":"Tokyo"},{"id":2}]Sortie TypeScript (Root, interface)
export type Root = RootValueItem[];
export interface RootValueItem {
id: number;
name?: string;
}Détails et limites
Chaque élément du tableau est inspecté. Dans l’exemple, name est absent du second objet et devient donc optionnel ; un champ présent avec la valeur null devient en revanche une union avec null.
Un tableau vide donne unknown[]. Les tableaux mixtes deviennent des tableaux d’un type union, pas des tuples de longueur fixe.
Les types ne couvrent que ce qui figure dans l’échantillon. Les champs qui n’apparaissent jamais, les formats de date ou d’e-mail, les plages de valeurs et les relations entre champs ne sont pas déduits.
L’entrée doit être du JSON standard ; nettoyez d’abord les commentaires ou les virgules finales avec le formateur JSON. Saisissez les identifiants avec des zéros initiaux sous forme de chaînes.
L’entrée est limitée à 1 000 000 de caractères, environ 64 niveaux et 50 000 valeurs. Les types TypeScript ne valident pas les données à l’exécution.
FAQ
Faut-il générer une interface ou un type ?
Les deux décrivent la même forme. interface crée une interface nommée par objet imbriqué, facile à réutiliser ; type crée un seul alias de type avec les objets imbriqués écrits inline.
Peut-il générer une classe TypeScript ?
Non, il génère uniquement des interfaces ou des alias de type. Si vous avez besoin d’une validation à l’exécution, utilisez JSON vers Zod et adaptez le schéma à vos règles.
Quelle différence entre null et un champ optionnel ?
{"name":null} a un name dont la valeur est null ; {} n’a pas de name du tout. null reste dans le type, et ? n’est ajouté que lorsque certains objets du même tableau n’ont pas le champ.
Que produit un tableau JSON à la racine ?
Un alias de type pour le tableau plus une interface pour ses éléments, comme dans l’exemple ci-dessus, où Root est RootValueItem[].