Validation des données en TypeScript : bibliothèques Zod, Yup et io-ts

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Validation des données en TypeScript : aperçu des bibliothèques Zod, Yup et io-ts



TypeScript est un langage typé statiquement qui vérifie les types au moment de la compilation. Cependant, à l'exécution (runtime), TypeScript n'effectue aucune vérification. Cela signifie que les données provenant de sources externes — requêtes API, formulaires de saisie, fichiers de configuration — peuvent ne pas correspondre aux types attendus. Pour résoudre ce problème, on utilise des bibliothèques de validation de données qui vérifient la structure et les types de données à l'exécution.



Dans cet article, nous examinerons trois bibliothèques populaires pour la validation de données en TypeScript : Zod, Yup et io-ts. Vous découvrirez comment elles fonctionnent, leurs différences et comment choisir celle qui convient à votre projet.



Pourquoi la validation des données en TypeScript est-elle nécessaire ?



Imaginez que vous écriviez une application qui reçoit des données d'un utilisateur via un formulaire :



interface UserInput {  name: string;  age: number;  email: string;}

function processUserInput(input: UserInput) { console.log(input.name.toUpperCase());}


En TypeScript, ce code sera compilé, même si à l'exécution input.name s'avère être undefined ou un nombre. Cela entraînera une erreur difficile à détecter. Les bibliothèques de validation permettent de garantir que les données correspondent au schéma attendu et fournissent des messages d'erreur clairs.



Zod — une bibliothèque moderne et rapide



Zod est une bibliothèque de validation déclarative et d'inférence de types. Elle est spécialement conçue pour TypeScript et propose une API concise.



Installation :



npm install zod


Exemple d'utilisation :



import { z } from 'zod';

// Définir le schéma de validationconst UserSchema = z.object({ name: z.string().min(2, "Le nom doit contenir au moins 2 caractères"), age: z.number().int().positive("L'âge doit être un nombre positif"), email: z.string().email("Email invalide"),});

// Inférer le type à partir du schématype User = z.infer<typeof UserSchema>;

// Validation des donnéesconst result = UserSchema.safeParse({ name: "Anna", age: 25, email: "anna@example.com",});

if (result.success) { // result.data est de type User console.log(result.data.name);} else { // result.error contient des informations détaillées sur les erreurs console.error(result.error.format());}


Zod prend en charge les structures complexes : objets imbriqués, tableaux, unions, discriminated unions. Il peut également transformer des données (par exemple, convertir des chaînes en nombres).



Yup — une bibliothèque populaire de l'écosystème React



Yup est une bibliothèque de validation de schémas largement utilisée avec Formik dans les applications React. Elle a une API similaire à Zod, mais est apparue plus tôt.



Installation :



npm install yup


Exemple d'utilisation :



import * as yup from 'yup';

// Définir le schémaconst userSchema = yup.object({ name: yup.string().min(2, "Le nom doit contenir au moins 2 caractères").required(), age: yup.number().integer().positive().required(), email: yup.string().email("Email invalide").required(),});

// Validation avec la méthode validateuserSchema.validate({ name: "Ivan", age: 30, email: "ivan@example.com",}).then(validData => console.log(validData)).catch(err => console.error(err.errors));


Yup fournit des méthodes pratiques pour la validation de formulaires, prend en charge les messages d'erreur personnalisés et les règles conditionnelles (when). Cependant, il est moins étroitement intégré à TypeScript que Zod — l'inférence de types nécessite des actions supplémentaires.



io-ts — une approche fonctionnelle de la validation



io-ts est une bibliothèque basée sur la programmation fonctionnelle. Elle utilise le concept de codecs pour transformer

Recommendations