Voltar para o Blog TypeScript 10 min

Gerador de CPF: Como Funciona?

Aprenda sobre a estrutura do CPF, como são gerados os dígitos verificadores e veja exemplos de código para validar e gerar CPFs válidos!

O que é o CPF e como ele é composto?

O CPF (Cadastro de Pessoas Físicas) é um documento fiscal brasileiro utilizado para identificar contribuintes perante a Receita Federal. Ele é amplamente utilizado em diversas situações, como abertura de contas bancárias, realização de compras e até mesmo para acessar serviços governamentais.

O CPF é composto por 11 dígitos, organizados da seguinte maneira:

  • 9 dígitos base: uma sequência numérica gerada aleatoriamente.
  • 2 dígitos verificadores: calculados a partir dos primeiros 9 dígitos para garantir a autenticidade do CPF.

Como funciona o cálculo dos dígitos verificadores?

O CPF utiliza um algoritmo de validação baseado no módulo 11, um método matemático comum para validar documentos numéricos. Esse cálculo reduz a chance de erros ou fraudes.

1º dígito verificador

  1. Multiplicar cada um dos 9 primeiros dígitos por uma sequência decrescente de 10 até 2.
  2. Somar todos os resultados.
  3. Calcular o módulo 11 dessa soma.
  4. Se o resultado for menor que 2, o dígito verificador será 0; caso contrário, subtrai-se o valor de 11.

2º dígito verificador

  1. Utilizar os 9 dígitos originais + o primeiro dígito verificador.
  2. Multiplicar cada um desses 10 números por uma sequência decrescente de 11 até 2.
  3. Somar os resultados e calcular o módulo 11.
  4. Se o resultado for menor que 2, o dígito será 0; caso contrário, subtrai-se o valor de 11.

Exemplo de implementação em JavaScript

Para consolidar o aprendizado, vamos criar um gerador de CPF válido utilizando JavaScript:

JavaScript
function calcularDigito(digits, factor) {
    let total = 0;
    for (let i = 0; i < digits.length; i++) {
        total += digits[i] * factor;
        factor--;
    }
    const resto = total % 11;
    return resto < 2 ? 0 : 11 - resto;
}

function gerarCPF() {
    const cpf = Array.from({ length: 9 }, () => Math.floor(Math.random() * 10));
    cpf.push(calcularDigito(cpf, 10));
    cpf.push(calcularDigito(cpf, 11));
    return cpf.join('');
}

console.log('CPF Gerado:', gerarCPF());

Exemplo de implementação em TypeScript

Agora, vejamos a mesma implementação em TypeScript, garantindo mais segurança com tipagem:

TypeScript
function calcularDigito(digits: number[], factor: number): number {
    let total = 0;
    for (let i = 0; i < digits.length; i++) {
        total += digits[i] * factor;
        factor--;
    }
    const resto = total % 11;
    return resto < 2 ? 0 : 11 - resto;
}

function gerarCPF(): string {
    const cpf: number[] = Array.from({ length: 9 }, () => Math.floor(Math.random() * 10));
    cpf.push(calcularDigito(cpf, 10));
    cpf.push(calcularDigito(cpf, 11));
    return cpf.join('');
}

console.log('CPF Gerado:', gerarCPF());

Diferença entre JavaScript e TypeScript

JavaScript é uma linguagem dinâmica, enquanto TypeScript adiciona uma camada de segurança e previsibilidade ao código.

  • JavaScript: permite maior flexibilidade, mas pode gerar erros inesperados.
  • TypeScript: inclui tipagem estática, ajudando a evitar erros antes mesmo da execução.

Vantagens de usar TypeScript

  • Tipagem estática: ajuda a evitar erros comuns.
  • Melhor manutenção: código mais estruturado e legível.
  • Escalabilidade: excelente para projetos maiores e desenvolvimento em equipe.

Conclusão

Com este artigo, aprendemos como funciona o CPF, a lógica de validação e sua implementação em JavaScript e TypeScript. Saber validar CPF é útil não apenas para desenvolvimento web, mas também para criar sistemas robustos e seguros.

Se gostou deste artigo, compartilhe com outros desenvolvedores! 🚀