Sobre el proyecto
Zod es una biblioteca de validación que prioriza TypeScript. Defines un esquema, analizas datos con él y recibes un resultado validado y fuertemente tipado. Funciona en Node.js y navegadores modernos, tiene cero dependencias externas y ofrece un paquete central pequeño (aproximadamente 2kb comprimidos con gzip). La API es inmutable: los métodos devuelven una nueva instancia en lugar de mutar el esquema existente. Puede usarse desde TypeScript o JavaScript plano e incluye conversión integrada a JSON Schema.
El uso básico comienza definiendo un esquema, por ejemplo un objeto con un campo de cadena y uno numérico. Llamar a `.parse` en el esquema valida la entrada y devuelve un clon profundo fuertemente tipado. Si el esquema utiliza refinamientos o transformaciones asíncronas, se requiere `.parseAsync()` en su lugar. Cuando la validación falla, `.parse()` lanza un `ZodError` que contiene información detallada del problema, como el tipo esperado, un código de error, la ruta al campo infractor y un mensaje. Para evitar try/catch, `.safeParse()` devuelve una unión discriminada con los datos analizados o el error; `.safeParseAsync()` cubre los esquemas asíncronos.
Los tipos se pueden inferir de los esquemas usando `z.infer<>`. Cuando los tipos de entrada y salida divergen, por ejemplo mediante `.transform()`, `z.input<>` y `z.output<>` los extraen de forma independiente.
Una característica notable es la compilación anticipada. `z.compile(schema)` devuelve un clon del esquema con una ruta rápida compilada para entradas válidas, mientras que las entradas inválidas recurren al analizador regular para que el informe de errores sea idéntico. El README reporta una aceleración mediana de 2.4x en un benchmark de 55 esquemas, que escala con la complejidad del esquema (grandes arreglos de objetos y objetos de 20 claves alrededor de 9x, objetos anidados alrededor de 4.5x, mientras que un esquema de cadena simple no gana nada). La compilación también se puede habilitar globalmente importando `zod/compile` antes de los módulos que definen esquemas. La compilación usa `new Function`, y el modo global se desactiva automáticamente cuando se establece `z.config({ jitless: true })`, por ejemplo en entornos CSP; llamar a `z.compile()` directamente es una aceptación explícita. Los esquemas con refinamientos o transformaciones asíncronas, y algunas otras construcciones, no se pueden compilar; en ese caso `z.compile()` devuelve el esquema sin cambios y sigue usando el analizador regular, a menos que se pase `{ strict: true }` para lanzar errores específicos. En entradas inválidas, los refinamientos y transformaciones pueden ejecutarse dos veces. Derivar un nuevo esquema de uno compilado devuelve un esquema no compilado, por lo que el esquema final debe compilarse.
La instalación se realiza mediante `npm install zod`. El proyecto enlaza a la documentación en zod.dev, una comunidad de Discord y canales sociales. Tiene licencia MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.