Quais são os tipos suportados?
O Zod oferece suporte a uma ampla gama de tipos que podem ser usados para definir os schemas. Isso garante que você possa validar diferentes estruturas de dados de forma precisa, independentemente da complexidade ou formato dos dados. Vamos explorar os tipos mais comuns suportados pelo Zod.
Tipos Primitivos
Os tipos primitivos são aqueles que usamos com frequência em JavaScript e TypeScript. O Zod oferece suporte total a eles, permitindo validar strings, números, booleans, e mais.
Exemplo 1: Tipos Primitivos
Nesse exemplo, validamos um objeto que contém uma string (name
), um número (age
), e um booleano (isAdmin
). Se qualquer um desses tipos estiver incorreto, o Zod irá lançar um erro de validação.
Arrays
Zod também permite a validação de arrays. Você pode definir o tipo de dado que o array deve conter, garantindo que todos os itens dentro do array estejam no formato correto.
Exemplo 2: Arrays
Neste caso, garantimos que o array data
contenha apenas strings. Se um dos itens do array fosse de outro tipo, como um número, a validação falharia.
Objetos
O Zod também suporta objetos, permitindo que você valide não só tipos primitivos e arrays, mas também estruturas mais complexas com propriedades aninhadas.
Exemplo 3: Objetos
Aqui estamos validando um objeto que contém outro objeto dentro (user
), além de um array de permissões. Essa estrutura aninhada é muito comum em aplicações modernas, e o Zod lida com isso de maneira eficiente.
Valores Opcionais e Valores Padrão
Com o Zod, você também pode definir campos opcionais ou atribuir valores padrões para propriedades que podem estar ausentes.
Exemplo 4: Valores Opcionais e Padrões
Nesse exemplo, a age
é opcional, e o campo role
terá o valor padrão "user"
se não for fornecido. Isso torna a validação mais flexível, acomodando casos em que algumas informações podem não estar disponíveis.
Outros Tipos Suportados
Além dos tipos primitivos, arrays e objetos, o Zod também suporta outros tipos como:
- Enums: Para validar valores que devem ser um de um conjunto limitado de opções.
- Tuples: Para validar arrays com um número fixo de elementos, onde cada elemento pode ter um tipo diferente.
- Unions: Para validar que um valor corresponde a pelo menos um de vários tipos.
- Date: Para validação de datas.
- Custom Types: É possível definir validações personalizadas utilizando
z.custom()
.
Exemplo 5: Unions e Enums
Neste exemplo, validamos que o valor do role
deve ser "admin"
ou "user"
usando z.union()
, e validamos a cor usando um z.enum()
.
Conclusão
O Zod suporta uma grande variedade de tipos que cobrem praticamente qualquer estrutura de dado que você precisará validar em suas aplicações. Desde tipos primitivos e arrays, até objetos complexos e enums, você pode garantir que seus dados estejam sempre no formato correto, aumentando a robustez e segurança da sua aplicação.