0Pricing
TypeScript Academy · Lezione

Validazione degli schemi con zod e inferenza in TS

Validi le richieste con zod; deduca i tipi TypeScript dagli schemi; aggiunga middleware e gestione degli errori sicuri.

Validazione degli schemi con zod e inferenza in TS è una lezione TypeScript Academy gratuita su CoddyKit. Questa è la lezione 2 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento TypeScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso TypeScript Academy include 3 lezioni in totale.

Introduzione

Obiettivo: validare i dati in ingresso con zod e mantenere sincronizzati i tipi TypeScript tramite z.infer. Analizzerà i dati in sicurezza, invierà errori utili e integrerà la validazione nel middleware.

  • Definire gli schemi una sola volta
  • Inferire i tipi TS
  • safeParse + errori 400

Schema + infer

Modelli i dati una sola volta con zod. Il type User = z.infer<typeof userSchema> derivato rispecchia esattamente la validazione.

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 tests

safeParse nell'handler

Utilizzi safeParse per evitare eccezioni; restituisca 400 con i problemi formattati. Il tipo della risposta riflette sia la forma di successo sia quella di errore.

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)
}

Helper middleware

Crei un middleware riutilizzabile. Analizza il body e allega i dati tipizzati oppure restituisce un 400 con i dettagli.

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()
  }
}

Coercizione e refine

Usi z.coerce per accettare numeri rappresentati come stringhe, z.enum per i valori noti e .refine per le regole tra più campi.

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 rules

Suggerimenti sugli errori

Suggerimenti sugli errori:

  • Usi sempre safeParse al confine dell'applicazione.
  • Formatti i problemi per i client; eviti di esporre gli stack trace.
  • Restringa unknown a ZodError se intercetta i parse che generano eccezioni.

Verifica dell'inferenza di zod

Verifica rapida: come si mantengono sincronizzati i tipi TS con gli schemi zod?

Riepilogo

Riepilogo: definisca un unico schema, ricavi il tipo TS, esegua la validazione con safeParse e lo colleghi al middleware per ottenere errori 400 coerenti.

Domande Frequenti

La lezione «Validazione degli schemi con zod e inferenza in TS» è gratuita?

Sì — il testo completo di «Validazione degli schemi con zod e inferenza in TS» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso TypeScript Academy, passa a CoddyKit PRO. Il corso TypeScript Academy include 3 lezioni in totale.

Cosa imparerò in «Validazione degli schemi con zod e inferenza in TS»?

Validi le richieste con zod; deduca i tipi TypeScript dagli schemi; aggiunga middleware e gestione degli errori sicuri. Eserciti TypeScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare TypeScript Academy?

Non è richiesta alcuna esperienza precedente. TypeScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 3.

Quanto tempo richiede la lezione «Validazione degli schemi con zod e inferenza in TS»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione TypeScript Academy?

Sì. Ogni lezione TypeScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Tipizzazione dei gestori del router, Request/Response
  2. Validazione degli schemi con zod e inferenza in TS
  3. Middleware degli errori e tipi Result
← Torna a TypeScript Academy