📧 Reste informĂ©(e) !

Reçois les derniers articles et conseils EasyAngularKit directement dans ta boßte mail.

S'inscrire gratuitement

~2 min de lecture

📩 Installer et utiliser Zod en TypeScript

1. Introduction

Quand on dĂ©veloppe en TypeScript, on bĂ©nĂ©ficie dĂ©jĂ  d’un typage statique. Mais attention :

Les types TypeScript disparaissent une fois compilés.

👉 Ça veut dire que rien ne garantit la validitĂ© des donnĂ©es Ă  l’exĂ©cution (API, formulaires, JSON externe
).

C’est là que Zod entre en jeu :

  • ✅ Validation runtime (pendant l’exĂ©cution)
  • ✅ InfĂ©rence automatique des types TypeScript
  • ✅ API simple et dĂ©clarative

En bref : Zod = typage + validation de données.

⚠ Zod est Ă  utiliser Ă  minima aux frontiĂšres de ton application (API externes, formulaires utilisateurs, configuration).


2. Installation

Zod est disponible sur npm.

npm install zod

ou avec yarn :

yarn add zod

ou avec pnpm :

pnpm add zod

Puis importez-le dans vos fichiers :

import { z } from "zod";

3. parse vs safeParse

đŸ”č parse()

  • Valide les donnĂ©es
  • Retourne directement les donnĂ©es typĂ©es si elles sont valides
  • ❌ Lance une exception si les donnĂ©es sont invalides
const UserSchema = z.object({
  id: z.number(),
  name: z.string(),
});

const user = UserSchema.parse({ id: 1, name: "Alice" });
console.log(user); // ✅ { id: 1, name: "Alice" }

UserSchema.parse({ id: "oops", name: "Bob" });
// ❌ Erreur lancĂ©e : Expected number, received string

đŸ”č safeParse()

  • Valide les donnĂ©es
  • Retourne un objet { success: boolean, data?, error? }
  • ✅ Utile si tu veux gĂ©rer proprement les erreurs sans try/catch
const result = UserSchema.safeParse({ id: "oops", name: "Bob" });

if (result.success) {
  console.log(result.data);
} else {
  console.log(result.error.format());
}

👉 RĂšgle gĂ©nĂ©rale :

  • parse si tu es sĂ»r des donnĂ©es (ou dans un test rapide)
  • safeParse si tu travailles avec de l’input utilisateur ou une API externe

4. Cas d’usage classiques

4.1 Validation d’entrĂ©e utilisateur (formulaire)

const SignUpSchema = z.object({
  username: z.string().min(3),
  password: z.string().min(8),
  age: z.number().min(18),
});

SignUpSchema.parse({ username: "John", password: "12345678", age: 21 }); // ✅

4.2 SĂ©curiser les donnĂ©es d’une API

4.2.1 Avec fetch()

const PostSchema = z.object({
  id: z.number(),
  title: z.string(),
  body: z.string().optional(),
});

type Post = z.infer<typeof PostSchema>;

async function fetchPost(id: number): Promise<Post> {
  const res = await fetch(`https://jsonplaceholder.typicode.com/posts/${id}`);
  const data = await res.json();

  return PostSchema.parse(data); // ⚡ lance une erreur si invalide
}

4.2.2 Avec HttpClient

const PostSchema = z.object({
  id: z.number(),
  title: z.string(),
  body: z.string().optional(),
});

type Post = z.infer<typeof PostSchema>;

function getPost(id: number): Observable<Post> {
  return this.httpClient.get<Post>(`https://jsonplaceholder.typicode.com/posts/${id}`)
  .pipe(
  map((post) => PostSchema.parse(post))
  );
}

4.2.2 Avec HttpResource (v20)

const PostSchema = z.object({
  id: z.number(),
  title: z.string(),
  body: z.string().optional(),
});

readonly
post = httpResource(
() => `https://jsonplaceholder.typicode.com/posts/${id}`,
{ parse: PostSchema.parse },
);

4.3 Générer automatiquement des types

const ProductSchema = z.object({
  id: z.string(),
  price: z.number(),
});

type Product = z.infer<typeof ProductSchema>;

const p: Product = { id: "123", price: 42 };

4.4 Combiner des schémas

const AdminSchema = UserSchema.extend({ role: z.literal("admin") });
const MemberSchema = UserSchema.extend({ role: z.literal("member") });

const PersonSchema = z.union([AdminSchema, MemberSchema]);

4.5 Transformer / nettoyer les données

const EmailSchema = z
.string()
.email()
.transform((val) => val.toLowerCase());

console.log(EmailSchema.parse("ALICE@EXAMPLE.COM"));
// alice@example.com

5. Cas d’usage (non exhaustif)

Voici quelques situations oĂč Zod devient un super alliĂ© dans des apps rĂ©elles :

  • ContrĂŽler ce que renvoie ton backend

  • ContrĂŽler le format de fichiers en input

  • ContrĂŽler ce que renvoie des API tierces

👉 En rĂ©sumĂ© : dĂšs que tu manipules des donnĂ©es venant de l’extĂ©rieur, pense Zod.


6. Conclusion

Zod est un outil incontournable si tu veux :

  • sĂ©curiser tes donnĂ©es cĂŽtĂ© frontend et backend
  • Ă©viter les bugs liĂ©s Ă  des entrĂ©es invalides
  • ne plus Ă©crire deux fois (types + validations)

⚠ Zod est Ă  utiliser Ă  minima aux frontiĂšres de ton application pour valider ce qui entre et ce qui sort.

👉 Pour un dĂ©veloppeur Angular/TypeScript, Zod devient vite un rĂ©flexe dans :

  • les appels API
  • la validation d’objets complexes

EasyAngularKit te donne toujours des outils concrets. Ici, tu peux avancer mĂȘme si ton backend dort encore 😮.

Envie de creuser davantage tes compĂ©tences Angular ? 👉Rejoins-nous : https://pim.ms/kyv6IOX

📧 Reste informĂ©(e) !

Reçois les derniers articles et conseils EasyAngularKit directement dans ta boßte mail.

S'inscrire gratuitement

AngularKit

Suite d'outils pour développeurs Angular francophones. Apprends, modernise tes réflexes, audite ta codebase.

Produits

Contact

Légal

© 2026 AngularKit. Tous droits réservés.