Pular para o conteúdo

Compondo esquemas com .merge e .extend

O Zod permite que você componha e modifique schemas facilmente usando os métodos .merge() e .extend(). Esses métodos são úteis para quando você precisa reutilizar ou expandir a estrutura de um schema.

.merge

O método .merge() permite combinar dois schemas de objetos. Isso é útil quando você tem dois objetos distintos e deseja unificá-los em um só.

Exemplo 1: Combinando esquemas com .merge

const baseSchema = z.object({
name: z.string(),
});
const extraSchema = z.object({
age: z.number(),
});
const mergedSchema = baseSchema.merge(extraSchema);
try {
mergedSchema.parse({ name: 'John', age: 30 }); // Válido
console.log('Schema combinado validado com sucesso!');
} catch (err) {
console.error('Erro de validação:', err.errors);
}

Aqui, os schemas baseSchema e extraSchema são combinados em um só, permitindo a validação de um objeto que contenha ambos name e age.

.extend

O método .extend() permite adicionar novas propriedades a um schema existente.

Exemplo 2: Expandindo um schema com .extend

const originalSchema = z.object({
name: z.string(),
});
const extendedSchema = originalSchema.extend({
age: z.number(),
});
try {
extendedSchema.parse({ name: 'John', age: 25 }); // Válido
console.log('Schema expandido validado com sucesso!');
} catch (err) {
console.error('Erro de validação:', err.errors);
}

Aqui, o originalSchema é expandido para incluir a propriedade age, criando um schema mais completo.