Validación de esquemas con zod e inferencia a TS
Valide solicitudes con zod; infiera tipos de TypeScript a partir de esquemas; añada middleware y gestión de errores seguros.
Validación de esquemas con zod e inferencia a TS es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 2 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de TypeScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de TypeScript Academy incluye 3 lecciones en total.
Introducción
Objetivo: Valide los datos entrantes con zod y mantenga sincronizados los tipos de TypeScript mediante z.infer. Analizará los datos de forma segura, enviará errores útiles e integrará la validación en un middleware.
- Definir los esquemas una sola vez
- Inferir tipos de TS
- safeParse + errores 400
Esquema e inferencia
Modele los datos una sola vez con zod. El type User = z.infer<typeof userSchema> derivado refleja exactamente la validación.
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 en el controlador
Use safeParse para evitar excepciones; devuelva 400 con los problemas formateados. El tipo de respuesta refleja tanto la forma correcta como la forma de error.
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)
}Utilidad de middleware
Cree un middleware reutilizable. Analiza el cuerpo y, o bien adjunta los datos tipados, o bien devuelve un 400 con los detalles.
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()
}
}Coerción y refine
Utilice z.coerce para aceptar números en forma de texto, z.enum para valores conocidos y .refine para reglas entre campos.
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 rulesConsejos sobre errores
Consejos sobre errores:
- Utilice siempre
safeParseen el límite de entrada. - Formatee los problemas para los clientes; evite filtrar trazas de pila.
- Reduzca
unknownaZodErrorsi captura análisis que generan errores.
Comprobación de inferencia de zod
Comprobación rápida: ¿Cómo mantiene sincronizados los tipos de TS con los esquemas de zod?
Repaso
Repaso: Defina un único esquema, infiera el tipo de TS, valide con safeParse e intégralo en el middleware para obtener errores 400 coherentes.
Preguntas frecuentes
¿La lección «Validación de esquemas con zod e inferencia a TS» es gratis?
Sí — el texto completo de «Validación de esquemas con zod e inferencia a TS» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de TypeScript Academy, actualiza a CoddyKit PRO. El curso de TypeScript Academy incluye 3 lecciones en total.
¿Qué aprenderé en «Validación de esquemas con zod e inferencia a TS»?
Valide solicitudes con zod; infiera tipos de TypeScript a partir de esquemas; añada middleware y gestión de errores seguros. Practicas TypeScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar TypeScript Academy?
No se requiere experiencia previa. TypeScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 3.
¿Cuánto tiempo toma la lección «Validación de esquemas con zod e inferencia a TS»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de TypeScript Academy?
Sí. Cada lección de TypeScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Tipado de handlers del router y de Request/Response
- Validación de esquemas con zod e inferencia a TS
- Middleware de errores y tipos Result