Zod — poderosa biblioteca para validação de dados em TypeScript

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é Zod?

Zod é uma biblioteca para validação declarativa e parsing de dados, escrita em TypeScript. Ela permite descrever esquemas de dados (esquemas são descrições rigorosas de tipos) e verificar a conformidade de quaisquer objetos, strings, números, etc. A principal característica do Zod é a integração completa com TypeScript: com base no esquema, os tipos são inferidos automaticamente, eliminando a duplicação de definições.

Para que serve a validação de dados?

Em aplicações reais, os dados geralmente vêm de fontes externas (API, formulários, arquivos de configuração, localStorage). Sem validação, é fácil obter bugs, ataques XSS ou comportamentos inesperados. O Zod garante que os dados correspondam à estrutura esperada e lança erros claros se algo estiver errado.

Instalação

npm install zod

A biblioteca não requer configurações adicionais e funciona tanto no Node.js quanto no navegador (com bundler).

Funções principais

  • Criação de esquemas: z.string(), z.number(), z.object(), z.array(), etc.
  • Parsing e validação: o método .parse() retorna os dados ou lança um erro; .safeParse() retorna um objeto com os campos success/data/error.
  • Transformação: .transform() permite modificar os dados após a verificação bem-sucedida.
  • Refine: verificações personalizadas com .refine().
  • Inferência de tipos: z.infer<typeof schema> gera um tipo TypeScript.

Exemplo de código em TypeScript

import { z } from 'zod';

// Define um esquema para o usuárioconst UserSchema = z.object({ id: z.number().int().positive(), name: z.string().min(2).max(50), email: z.string().email(), age: z.number().min(18).max(120).optional(), role: z.enum(['admin', 'user', 'guest'])});

// Infere o tipo com base no esquematype User = z.infer<typeof UserSchema>;

// Usa safeParse para validação seguraconst rawData = { id: 1, name: 'Анна', email: 'anna@example.com', age: 25, role: 'admin'};

const result = UserSchema.safeParse(rawData);if (result.success) { console.log('Dados válidos:', result.data);} else { console.error('Erros:', result.error.errors);}

Quando usar Zod

Zod é ideal para:

  • Validação de dados de entrada de API (por exemplo, em Express ou Next.js).
  • Verificação de dados de formulários no cliente e no servidor.
  • Parsing de variáveis de ambiente (dotenv + Zod).
  • Trabalho com arquivos de configuração (JSON/YAML).
  • Criação de tipos rigorosos para dados dinâmicos.

Graças ao suporte completo do TypeScript, o Zod torna o código mais seguro e legível, eliminando a dessincronização entre os tipos e os dados reais.

Recommendations