Aller au contenu
Tout en local

Schéma Zod vers type TypeScript

Convertissez une définition de schéma Zod en son interface ou type TypeScript correspondant.

Entrée
Sortie

Schéma Zod vers type TypeScript

Collez un schéma Zod —une définition `z.object({...})`, éventuellement assignée à une `const`— et cet outil génère l'interface TypeScript ou l'alias de type que `z.infer` produirait. C'est utile quand le schéma est la source de vérité et que vous voulez le type statique sans exécuter une étape de compilation ou une CLI de génération de code : pour vérifier rapidement lors de l'écriture de code de validation, pour documenter la forme d'une API à partir de son schéma Zod, ou pour porter un schéma dans une base de code qui n'a besoin que des types.

Les options de sortie contrôlent la forme du code généré. Choisissez entre une `interface` et un alias `type` (un schéma autre qu'un objet, comme une union simple ou une chaîne, devient toujours un alias de type, car les interfaces TypeScript ne peuvent décrire que des formes d'objets), et si la déclaration est `export`ée. Les champs optionnels peuvent être rendus soit comme un point d'interrogation (`field?: string`), soit comme une union explicite `string | undefined`. Une bascule garde les membres de `z.enum` comme une union littérale au lieu de les réduire à `string`, et une autre transforme `.describe("...")` en commentaires de documentation au-dessus de chaque champ.

Les objets imbriqués, tableaux, tuples, unions, intersections, enregistrements, cartes et ensembles se convertissent tous en leurs équivalents TypeScript, et les appels enchaînés courants qui valident au moment de l'exécution — `.min()`, `.email()`, `.refine()`, `.default()` et autres — sont reconnus et ignorés plutôt que de briser la conversion. Les schémas récursifs construits avec `z.lazy(() => Schema)` sont résolus en un type auto-référencé quand la `const` correspondante fait partie de l'entrée ; désactivez cette option pour voir `any` à la place. Les sauts de ligne Windows et Unix sont traités de manière identique, et le total sous la sortie indique le nombre de déclarations et de champs générés.

Tout s'exécute dans votre navigateur. Le schéma que vous collez n'est jamais téléchargé nulle part, il est donc sûr à utiliser avec le code de validation d'une API non lancée. Copiez le résultat, téléchargez-le en tant que fichier `.txt`, ou envoyez-le directement à un autre outil pour continuer à travailler.

FAQ

Quelle version de Zod est supportée ?
Les fonctions factory courantes et les méthodes enchaînées de Zod v3 et v4 — objets, tableaux, unions, enregistrements et le reste. Les transformations personnalisées et les raffinements sont analysés et ignorés, car leur effet sur le type ne peut pas être déduit du texte du schéma seul.
Que se passe-t-il avec .refine(), .transform() et les appels similaires ?
Ils sont reconnus et ignorés : l'outil conserve le type que le schéma avait avant l'appel, car il ne peut pas évaluer une fonction arbitraire pour savoir comment une transformation change la forme.
Peut-il gérer un schéma réparti sur plusieurs déclarations const ?
Oui. Chaque schéma déclaré dans l'entrée est converti en sa propre interface ou type, dans l'ordre où il apparaît, donc un sous-schéma partagé référencé par nom dans un autre se résout correctement.
Pourquoi mon schéma affiche-t-il une erreur au lieu de se convertir ?
Généralement une accolade, une parenthèse ou un guillemet de fermeture manquant quelque part dans le code collé. Vérifiez que chaque z.object({ ... }) et littéral de tableau est correctement fermé.
Mon schéma est-il téléchargé quelque part ?
Non. La conversion s'exécute entièrement dans votre navigateur — votre schéma ne quitte jamais votre appareil.