TypeStack/class-validator para TypeScript: guia completo com exemplos

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

TypeStack/class-validator para TypeScript: guia completo com exemplos

1. O que é e para que serve

A biblioteca TypeStack/class-validator é uma ferramenta poderosa para validação de dados em TypeScript e JavaScript, baseada em decorators. Ela permite que desenvolvedores descrevam regras de validação diretamente nas classes, usando decorators de propriedades. Isso torna o código mais legível, autodocumentado e simplifica significativamente o processamento de dados recebidos, especialmente ao trabalhar com REST APIs, formulários ou qualquer outra fonte de dados.

Para que serve? No desenvolvimento web moderno, os dados vêm de várias fontes: requisições HTTP, arquivos de configuração, bancos de dados. Sem uma validação confiável, esses dados podem causar erros em tempo de execução, vulnerabilidades de segurança ou simplesmente um comportamento incorreto da aplicação. O class-validator resolve esse problema fornecendo uma forma declarativa de verificar dados. Em vez de escrever longas estruturas if-else, você simplesmente adiciona decorators às propriedades da classe, e a biblioteca verifica automaticamente se elas atendem às regras definidas.

Outra vantagem importante é a integração estreita com o TypeScript. Os decorators permitem não apenas validar dados, mas também definir seus tipos, tornando o processo de desenvolvimento mais seguro e previsível. A biblioteca oferece uma ampla gama de validadores embutidos (desde verificações simples de comprimento de string até expressões regulares complexas) e permite criar facilmente seus próprios validadores personalizados.

2. Instalação

Para instalar a biblioteca class-validator e sua dependência obrigatória reflect-metadata, execute o seguinte comando no terminal do seu projeto:

npm install class-validator reflect-metadata

Após a instalação, certifique-se de que as seguintes opções estejam habilitadas no seu arquivo tsconfig.json para o funcionamento correto dos decorators:

{
  "compilerOptions": {
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true
  }
}

Também é importante importar o reflect-metadata no início da sua aplicação (geralmente no arquivo principal index.ts ou app.ts):

import "reflect-metadata";

3. Início rápido

Vamos ver um exemplo mínimo funcional. Criaremos uma classe de usuário com validação de campos:

import "reflect-metadata";
import { validate, IsString, IsEmail, MinLength } from "class-validator";

class User {
    @IsString()
    @MinLength(3, { message: "O nome deve ter pelo menos 3 caracteres" })
    name: string;

    @IsEmail({}, { message: "Email inválido" })
    email: string;

    constructor(name: string, email: string) {
        this.name = name;
        this.email = email;
    }
}

async function main() {
    const user = new User("Jo", "email-invalido");
    const errors = await validate(user);

    if (errors.length > 0) {
        console.log("Erros de validação:");
        errors.forEach(error => {
            console.log(`- ${error.property}: ${Object.values(error.constraints).join(", ")}`);
        });
    } else {
        console.log("Validação bem-sucedida!");
    }
}

main();
// Saída:
// Erros de validação:
// - name: O nome deve ter pelo menos 3 caracteres
// - email: Email inválido

Neste exemplo, criamos a classe User, adicionamos decorators às suas propriedades e chamamos a função validate(). Ela retorna um array de erros se os dados não estiverem em conformidade com as regras.

4. Principais métodos/funções/classes

Vamos explorar 8 funções e classes essenciais da biblioteca

Recommendations