Apprendre Zod en 5 minutes : Valider ses données facilement en TypeScript
Typescript JavascriptIntroduction
Bienvenue dans cet article rapide pour découvrir Zod, une de mes librairies préférées pour la validation de données en JavaScript et TypeScript ! Et bonne nouvelle : Zod 4 est en bêta — c’est donc le moment parfait pour apprendre à l’utiliser efficacement.
Qu’est-ce que Zod ?
Zod est une librairie open-source qui permet de valider facilement des données. Son concept est simple :
-
Tu définis un schéma qui décrit la forme attendue de tes données
-
Zod valide automatiquement que les données reçues correspondent à ce schéma
-
Il propose une excellente intégration TypeScript, avec inférence automatique des types.
Zod est particulièrement utile pour :
-
La validation de formulaires côté frontend
-
Le contrôle des réponses d’API côté backend
-
La sécurisation des données issues d’outils d’IA (comme le protocole MCP d’Anthropic)
Premier exemple : validation d’une chaîne de caractères
import { z } from "zod";
const schema = z.string();
schema.parse("Hello World"); // OK
schema.parse(42); // Erreur de validation
👉 On décrit ce qu’on attend (string), Zod se charge du reste !
Exemple complet : valider un utilisateur
import { z } from "zod";
const userSchema = z.object({
name: z.string(),
age: z.number().min(0),
email: z.string().email(),
});
// Validation
try {
userSchema.parse({ name: "Alice", age: 25, email: "alice@example.com" });
console.log("Data are valid");
} catch (error) {
console.error(error.errors);
}
Avec parse, tu obtiens une erreur détaillée si les données ne sont pas conformes.
Avec safeParse, tu peux éviter les try/catch pour une gestion plus fluide :
const result = userSchema.safeParse({ name: "Alice", age: 25, email: "alice@example.com" });
if (result.success) {
console.log(result.data);
} else {
console.error(result.error.errors);
}
Aller plus loin : schémas avancés
Validation croisée avec refine
Vérifier que deux mots de passe correspondent :
const passwordSchema = z.object({
password: z.string().min(6),
confirmPassword: z.string(),
}).refine((data) => data.password === data.confirmPassword, {
message: "Passwords do not match",
path: ["confirmPassword"],
});
Conversion automatique avec coerce
Parfois, les données proviennent d’un formulaire (donc sous forme de chaînes). Zod peut automatiquement convertir ces valeurs :
const schema = z.object({
age: z.coerce.number(),
});
schema.parse({ age: "30" }); // { age: 30 }
Générer un type TypeScript avec z.infer
const userSchema = z.object({
name: z.string(),
age: z.number(),
email: z.string().email(),
});
type User = z.infer<typeof userSchema>;
// User est maintenant { name: string; age: number; email: string }
Pourquoi apprendre Zod maintenant ?
-
Zod 4 est en bêta avec des nouveautés intéressantes 🔥
-
Utilisé directement par des frameworks modernes comme Astro pour la définition des contenus
-
Permet de sécuriser et fiabiliser ton code rapidement
Ressources complémentaires 📚
Si tu veux aller plus loin :
👉 Découvre ma formation complète sur Astro (Typescript + Zod inclus)