Entendiendo Zod y la Validación en Tiempo de Ejecución
Zod es una biblioteca de validación de esquemas con TypeScript como prioridad que te permite definir esquemas e inferir tipos TypeScript a partir de ellos. A diferencia de los tipos de tiempo de compilación de TypeScript que se eliminan en tiempo de ejecución, los esquemas Zod validan activamente los datos en tiempo de ejecución, detectando discrepancias de tipos, campos faltantes y valores inválidos cuando tu aplicación procesa datos externos de APIs, formularios o bases de datos.
Inferencia de Tipos desde Muestras JSON
Cuando pegas datos JSON, el generador examina cada valor para determinar su tipo Zod. Las cadenas se mapean a z.string(), los números a z.number() con .int() opcional para enteros, los booleanos a z.boolean(), y null a z.null(). Los arrays se convierten en z.array() con el tipo de elemento inferido del primer elemento. Los objetos anidados se convierten en esquemas z.object() anidados, creando una definición de tipo recursiva completa.
Coerción y Detección de Fechas
La función de coerción de Zod (z.coerce) convierte automáticamente los valores de entrada al tipo objetivo antes de la validación. Cuando la coerción de números está habilitada, las entradas de cadena como "42" se analizan como números. La coerción de fechas detecta cadenas de fecha ISO 8601 y las convierte en objetos Date automáticamente. Esto es particularmente útil para entradas de formulario donde todos los valores llegan como cadenas pero necesitan validación numérica o de fecha.
Mejores Prácticas para el Diseño de Esquemas
Comienza con una muestra JSON representativa que incluya todos los campos posibles que tus datos puedan contener. Usa campos opcionales para propiedades que puedan estar ausentes en algunas respuestas. Habilita el modo estricto durante el desarrollo para detectar propiedades inesperadas temprano. Nombra tus esquemas descriptivamente, coincidiendo con tus modelos de dominio. Combina esquemas generados con refinamientos manuales como .min(), .max() o .email() para uso en producción.





