Zod — una potente biblioteca para la validación de datos en TypeScript

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es Zod?

Zod es una biblioteca para la validación declarativa y el análisis de datos, escrita en TypeScript. Permite describir esquemas de datos (los esquemas son descripciones estrictas de tipos) y verificar que cualquier objeto, cadena, número, etc., cumpla con ellos. La característica principal de Zod es su integración completa con TypeScript: los tipos se infieren automáticamente a partir del esquema, lo que elimina la duplicación de definiciones.

¿Por qué es necesaria la validación de datos?

En aplicaciones reales, los datos a menudo provienen de fuentes externas (API, formularios, archivos de configuración, localStorage). Sin validación, es fácil introducir errores, ataques XSS o comportamientos inesperados. Zod garantiza que los datos coincidan con la estructura esperada y lanza errores claros si algo no está bien.

Instalación

npm install zod

La biblioteca no requiere configuración adicional y funciona tanto en Node.js como en el navegador (con un bundler).

Funciones principales

  • Creación de esquemas: z.string(), z.number(), z.object(), z.array(), etc.
  • Análisis y validación: el método .parse() devuelve los datos o lanza un error; .safeParse() devuelve un objeto con los campos success/data/error.
  • Transformación: .transform() permite modificar los datos después de una verificación exitosa.
  • Refine: verificaciones personalizadas con .refine().
  • Inferencia de tipos: z.infer<typeof schema> genera un tipo TypeScript.

Ejemplo de código en TypeScript

import { z } from 'zod';

// Definimos un esquema para un usuarioconst UserSchema = z.object({ id: z.number().int().positive(), name: z.string().min(2).max(50), email: z.string().email(), age: z.number().min(18).max(120).optional(), role: z.enum(['admin', 'user', 'guest'])});

// Inferimos el tipo basado en el esquematype User = z.infer<typeof UserSchema>;

// Usamos safeParse para una validación seguraconst rawData = { id: 1, name: 'Ana', email: 'anna@example.com', age: 25, role: 'admin'};

const result = UserSchema.safeParse(rawData);if (result.success) { console.log('Datos válidos:', result.data);} else { console.error('Errores:', result.error.errors);}

Cuándo usar Zod

Zod es ideal para:

  • Validar datos de entrada de API (por ejemplo, en Express o Next.js).
  • Verificar datos de formularios tanto en el cliente como en el servidor.
  • Analizar variables de entorno (dotenv + Zod).
  • Trabajar con archivos de configuración (JSON/YAML).
  • Crear tipos estrictos para datos dinámicos.

Gracias a su soporte completo de TypeScript, Zod hace que el código sea más seguro y legible, eliminando la desincronización entre los tipos y los datos reales.

Recommendations