Technology Sep 14, 2026 · 2 min read

validation-br 2.0: Validação em TypeScript, zero dependências

Acabei de lançar a versão 2.0 do validation-br, uma biblioteca em TypeScript para validar documentos brasileiros: CPF, CNPJ (numérico e alfanumérico), CEP, Boleto, chave Pix, Pix Copia e Cola, Título de Eleitor, PIS/PASEP, CNH, RENAVAM e mais uma dezena de outros formatos. A grande mudança da 2.0 é...

DE
DEV Community
by Claudio Medeiros
validation-br 2.0: Validação em TypeScript, zero dependências

Acabei de lançar a versão 2.0 do validation-br, uma biblioteca em TypeScript para validar documentos brasileiros: CPF, CNPJ (numérico e alfanumérico), CEP, Boleto, chave Pix, Pix Copia e Cola, Título de Eleitor, PIS/PASEP, CNH, RENAVAM e mais uma dezena de outros formatos.

A grande mudança da 2.0 é a forma como a validação funciona: cada documento agora é uma classe imutável, no estilo value object. Em vez de chamar uma função que devolve true ou false, você instancia o documento e ele já nasce validado.

import { CPF } from 'validation-br/cpf';

const cpf = new CPF('906.259.666-51');

cpf.value      // -> '90625966651', o valor normalizado, sem máscara
cpf.mask()     // -> '906.259.666-51'

Se o valor for inválido, o construtor lança uma exceção em vez de devolver false. Isso deixa o fluxo mais explícito: ou você tem um CPF de verdade em mãos, ou você trata o erro. Pra quem só quer um booleano rápido, os atalhos isCPF, isCNPJ etc. continuam existindo e funcionando exatamente como antes.

Um ponto que considero importante: o pacote não tem nenhuma dependência em produção. Zero. Só usa APIs nativas do JS/TS, o que significa um node_modules mais enxuto e uma superfície de ataque bem menor pra quem se preocupa com supply chain.

Exemplo: CNPJ alfanumérico

Desde 2026 a Receita Federal aceita CNPJ com letras no corpo do número (mantendo os dois últimos dígitos verificadores sempre numéricos). O validation-br já suporta isso, inclusive pra gerar exemplos fake pra teste:

import { CNPJ } from 'validation-br/cnpj';

// Gera um CNPJ alfanumérico de exemplo
CNPJ.fake({ alphanumeric: true }).mask();
// -> 'WX.BC2.1FX/0001-00'

new CNPJ('WX.BC2.1FX/0001-00').value;
// -> 'WXBC21FX000100', o valor normalizado

A mesma classe calcula o dígito verificador, aplica e remove máscara, e gera valores fake válidos, tanto no formato numérico tradicional quanto no alfanumérico novo.

Onde encontrar

DE
Source

This article was originally published by DEV Community and written by Claudio Medeiros.

Read original article on DEV Community
Back to Discover

Reading List