📧 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

EasyAngularKit

Formation complÚte pour maßtriser Angular et développer des applications web modernes.

Navigation

Contact

Légal

© 2026 Easy Angular Kit. Tous droits réservés.