Validation de schémas avec zod et inférence vers TS
Validez les requêtes avec zod ; déduisez les types TypeScript à partir des schémas ; ajoutez un middleware et une gestion des erreurs sûrs.
Validation de schémas avec zod et inférence vers TS est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage TypeScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours TypeScript Academy comprend 3 leçons au total.
Introduction
Objectif : validez les données entrantes avec zod et maintenez les types TypeScript synchronisés grâce à z.infer. Vous analyserez les données en toute sécurité, enverrez des erreurs utiles et intégrerez la validation dans un intergiciel.
- Définissez les schémas une seule fois
- Déduisez les types TS
- safeParse et erreurs 400
Schéma et déduction
Modélisez une seule fois avec zod. Le type User = z.infer<typeof userSchema> dérivé reproduit exactement la validation.
import { z } from "zod"
export const userSchema = z.object({
id: z.string().regex(/^u_[a-z0-9]+$/),
name: z.string().min(1),
age: z.number().int().nonnegative().optional()
})
export type User = z.infer<typeof userSchema>
// Reuse `User` across handlers, services, and testssafeParse dans le gestionnaire
Utilisez safeParse pour éviter les exceptions ; renvoyez 400 avec les problèmes mis en forme. Le type de réponse reflète les formes de réussite et d’erreur.
import { Request, Response } from "express"
import { userSchema, User } from "./schema"
export function createUser(req: Request<{}, User, unknown>, res: Response<User | { error: string; issues?: unknown }>) {
const parsed = userSchema.safeParse(req.body)
if (!parsed.success) {
return res.status(400).json({ error: "Invalid body", issues: parsed.error.format() })
}
const user = parsed.data
return res.status(201).json(user)
}Assistant d’intergiciel
Créez un intergiciel réutilisable. Il analyse le body et ajoute les données typées, ou renvoie une erreur 400 accompagnée de détails.
import { z } from "zod"
import { Request, Response, NextFunction } from "express"
export function validateBody<T extends z.ZodTypeAny>(schema: T) {
return (req: Request, res: Response, next: NextFunction) => {
const r = schema.safeParse(req.body)
if (!r.success) {
return res.status(400).json({ error: "Invalid body", issues: r.error.format() })
}
req.body = r.data
next()
}
}Coercition et affinement
Utilisez z.coerce pour accepter les nombres sous forme de chaînes, z.enum pour les valeurs connues et .refine pour les règles entre champs.
import { z } from "zod"
const signupSchema = z.object({
email: z.string().email(),
age: z.coerce.number().int().gte(13),
role: z.enum(["user", "admin"]).default("user")
}).refine(v => v.role !== "admin" || v.age >= 18, { message: "admin must be adult" })
export type Signup = z.infer<typeof signupSchema>
// Coercion allows numbers in strings; refine adds cross-field rulesConseils sur les erreurs
Conseils sur les erreurs :
- Utilisez toujours
safeParseà la frontière de l’application. - Mettez les problèmes en forme pour les clients ; évitez de divulguer les traces de pile.
- Réduisez
unknownàZodErrorsi vous interceptez des analyses qui lèvent une exception.
Vérification de l’inférence avec zod
Vérification rapide : comment garder les types TS synchronisés avec les schémas zod ?
Récapitulatif
Récapitulatif : définissez un seul schéma, inférez le type TS, validez avec safeParse et branchez-le à l’intergiciel pour obtenir des erreurs 400 cohérentes.
Apprends TypeScript avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 101
- Leçons
- 352
Questions Fréquemment Posées
La leçon « Validation de schémas avec zod et inférence vers TS » est-elle gratuite ?
Oui — le texte complet de « Validation de schémas avec zod et inférence vers TS » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours TypeScript Academy, passe à CoddyKit PRO. Le cours TypeScript Academy comprend 3 leçons au total.
Qu'est-ce que j'apprendrai dans « Validation de schémas avec zod et inférence vers TS » ?
Validez les requêtes avec zod ; déduisez les types TypeScript à partir des schémas ; ajoutez un middleware et une gestion des erreurs sûrs. Tu pratiques TypeScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer TypeScript Academy ?
Aucune expérience préalable n'est requise. TypeScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 3.
Combien de temps prend la leçon « Validation de schémas avec zod et inférence vers TS » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon TypeScript Academy ?
Oui. Chaque leçon TypeScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Types des gestionnaires de route et de Request/Response
- Validation de schémas avec zod et inférence vers TS
- Middleware d’erreurs et types Result