Para hacer que cualquier esquema sea opcional, he visto que zod proporciona dos métodos: z.opcional(z.string()) y z.ostring(). Me pregunto cuál es la diferencia entre ellos. ¿Y qué debo usar para la mayoría de los casos?
Mirando el código fuente revela que:
const ostring = () => stringType().optional();Y del readme sabemos que:
const optionalString = z.string().optional(); // string | undefined // equivalent to z.optional(z.string());Entonces no hay diferencia
Las dos formas son iguales.
z.ostring() y similares son atajos . Su función es equivalente a envolver el tipo normal con z.optional() o encadenar .optional() . De hecho, se implementan internamente usando el .optional() encadenado.