Zod — une bibliothèque puissante pour la validation de données en TypeScript

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

Qu'est-ce que Zod ?

Zod est une bibliothèque de validation déclarative et d'analyse de données, écrite en TypeScript. Elle permet de décrire des schémas de données (les schémas sont des descriptions strictes de types) et de vérifier la conformité de tout objet, chaîne de caractères, nombre, etc. La principale caractéristique de Zod est son intégration complète avec TypeScript : les types sont automatiquement déduits à partir du schéma, ce qui évite la duplication des définitions.

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

Dans les applications réelles, les données proviennent souvent de sources externes (API, formulaires, fichiers de configuration, localStorage). Sans validation, il est facile d'obtenir des bugs, des attaques XSS ou un comportement inattendu. Zod garantit que les données correspondent à la structure attendue et génère des erreurs claires si quelque chose ne va pas.

Installation

npm install zod

La bibliothèque ne nécessite aucune configuration supplémentaire et fonctionne aussi bien dans Node.js que dans le navigateur (avec un bundler).

Fonctions principales

  • Création de schémas : z.string(), z.number(), z.object(), z.array(), etc.
  • Analyse et validation : la méthode .parse() retourne les données ou lève une erreur ; .safeParse() retourne un objet avec les champs success/data/error.
  • Transformation : .transform() permet de modifier les données après une validation réussie.
  • Refine : validations personnalisées avec .refine().
  • Inférence de types : z.infer<typeof schema> génère un type TypeScript.

Exemple de code en TypeScript

import { z } from 'zod';

// Définit un schéma pour un utilisateurconst UserSchema = z.object({ id: z.number().int().positive(), name: z.string().min(2).max(50), email: z.string().email(), age: z.number().min(18).max(120).optional(), role: z.enum(['admin', 'user', 'guest'])});

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

// Utilise safeParse pour une validation sécuriséeconst rawData = { id: 1, name: 'Анна', email: 'anna@example.com', age: 25, role: 'admin'};

const result = UserSchema.safeParse(rawData);if (result.success) { console.log('Données valides :', result.data);} else { console.error('Erreurs :', result.error.errors);}

Quand utiliser Zod

Zod est idéal pour :

  • La validation des données d'entrée d'une API (par exemple, dans Express ou Next.js).
  • La vérification des données de formulaires côté client et serveur.
  • L'analyse des variables d'environnement (dotenv + Zod).
  • Le travail avec des fichiers de configuration (JSON/YAML).
  • La création de types stricts pour des données dynamiques.

Grâce à la prise en charge complète de TypeScript, Zod rend le code plus sûr et plus lisible, en éliminant la désynchronisation entre les types et les données réelles.

Recommendations