💎 Zod 4 is now stable!  Read the announcement.
Zod logo

Zod

El paquete zod/v4 es la biblioteca "insignia" del ecosistema Zod. Logra un equilibrio entre la experiencia del desarrollador y el tamaño del paquete que es ideal para la gran mayoría de las aplicaciones.

Si tienes restricciones poco comunes en torno al tamaño del paquete, considera Zod Mini.

Zod tiene como objetivo proporcionar una API de esquema que se asigne uno a uno con el sistema de tipos de TypeScript.

import * as z from "zod";
 
const schema = z.object({
  name: z.string(),
  age: z.number().int().positive(),
  email: z.email(),
});

La API se basa en métodos para proporcionar una forma concisa, encadenable y fácil de autocompletar para definir tipos complejos.

z.string()
  .min(5)
  .max(10)
  .toLowerCase();

Todos los esquemas extienden la clase base z.ZodType, que a su vez extiende z.$ZodType de zod/v4/core. Todas las instancias de ZodType implementan los siguientes métodos:

import * as z from "zod";
 
const mySchema = z.string();
 
// análisis (parsing)
mySchema.parse(data);
mySchema.safeParse(data);
mySchema.parseAsync(data);
mySchema.safeParseAsync(data);
 
 
// refinamientos (refinements)
mySchema.refine(refinementFunc);
mySchema.superRefine(refinementFunc); // obsoleto, usa `.check()`
mySchema.overwrite(overwriteFunc);
 
// envoltorios (wrappers)
mySchema.optional();
mySchema.nonoptional();
mySchema.nullable();
mySchema.nullish();
mySchema.default(defaultValue);
mySchema.array();
mySchema.or(otherSchema);
mySchema.transform(transformFunc);
mySchema.catch(catchValue);
mySchema.pipe(otherSchema);
mySchema.readonly();
 
// metadatos y registros
mySchema.register(registry, metadata);
mySchema.describe(description);
mySchema.meta(metadata);
 
// utilidades
mySchema.check(checkOrFunction);
mySchema.clone(def);
mySchema.brand<T>();
mySchema.isOptional(); // boolean
mySchema.isNullable(); // boolean