Pular para o conteúdo principal

Type Fields — Documentos

Type Fields para validação de documentos de identificação. Inclui documentos brasileiros (CPF, CNPJ, RG) e tipos genéricos para sistemas multi-locale.

Resumo

ClasseMinMaxValidação extraArquivo
FDocumentId120Alfanumérico; locale br: 11 dígitos (CPF) ou 14 (CNPJ)document-id.format_vo.ts
FDocumentCpf1111Exatamente 11 dígitos numéricosdocument-cpf.format_vo.ts
FDocumentCnpj1414Exatamente 14 dígitos numéricosdocument-cnpj.format_vo.ts
FDocumentCpfOrCnpj111411 dígitos (CPF) ou 14 dígitos (CNPJ)document-cpf-or-cnpj.format_vo.ts
FDocumentRg714Alfanuméricodocument-rg.format_vo.ts
FDocumentType120Enum ODocumentTypedocument-type.format_vo.ts
FDocumentStateRegistration120Apenas dígitos numéricosdocument-state-registration.format_vo.ts
FDocumentMunicipalRegistration120Apenas dígitos numéricosdocument-municipal-registration.format_vo.ts

FDocumentId

Identificador genérico de documento com validação locale-aware. No modo padrão, aceita qualquer string alfanumérica de 1 a 20 caracteres. Com TypeField.locale = "br", valida especificamente CPF (11 dígitos) ou CNPJ (14 dígitos).

import { FDocumentId } from "tyforge";

// Modo genérico (qualquer locale)
const result = FDocumentId.create("ABC123456");
// Result<FDocumentId, ExceptionValidation>

const doc = FDocumentId.createOrThrow("ABC123456");
doc.getValue(); // "ABC123456"

Com locale brasileiro

import { FDocumentId, TypeField } from "tyforge";

TypeField.configure({ locale: "br" });

// Aceita CPF (11 dígitos)
const cpf = FDocumentId.createOrThrow("12345678901");

// Aceita CNPJ (14 dígitos)
const cnpj = FDocumentId.createOrThrow("12345678000190");

// Rejeita formatos inválidos para locale br
const invalido = FDocumentId.create("ABC123");
// Result com erro: "Brazilian document must be exactly 11 digits (CPF) or 14 digits (CNPJ)"

Regras de validação:

  • Modo genérico: apenas caracteres alfanuméricos (/^[a-zA-Z0-9]+$/)
  • Locale br: exatamente 11 dígitos (CPF) ou 14 dígitos (CNPJ)

FDocumentCpf

Número de CPF brasileiro (Cadastro de Pessoas Físicas). Armazena 11 dígitos numéricos e oferece formatação automática no padrão XXX.XXX.XXX-XX.

import { FDocumentCpf } from "tyforge";

const result = FDocumentCpf.create("12345678901");
// Result<FDocumentCpf, ExceptionValidation>

const cpf = FDocumentCpf.createOrThrow("12345678901");
cpf.getValue(); // "12345678901"
cpf.formatted(); // "123.456.789-01"

Regras de validação:

  • Exatamente 11 dígitos numéricos (/^\d{11}$/)
  • Valores com pontuação ou letras são rejeitados

FDocumentCnpj

Número de CNPJ brasileiro (Cadastro Nacional da Pessoa Jurídica). Armazena 14 dígitos numéricos e oferece formatação automática no padrão XX.XXX.XXX/XXXX-XX.

import { FDocumentCnpj } from "tyforge";

const result = FDocumentCnpj.create("12345678000190");
// Result<FDocumentCnpj, ExceptionValidation>

const cnpj = FDocumentCnpj.createOrThrow("12345678000190");
cnpj.getValue(); // "12345678000190"
cnpj.formatted(); // "12.345.678/0001-90"

Regras de validação:

  • Exatamente 14 dígitos numéricos (/^\d{14}$/)
  • Valores com pontuação ou letras são rejeitados

FDocumentCpfOrCnpj

Aceita tanto CPF (11 dígitos) quanto CNPJ (14 dígitos). Útil para campos onde o tipo de pessoa (física ou jurídica) não é conhecido previamente. Oferece métodos para identificar o tipo do documento.

import { FDocumentCpfOrCnpj } from "tyforge";

// Com CPF
const cpf = FDocumentCpfOrCnpj.createOrThrow("12345678901");
cpf.isCpf(); // true
cpf.isCnpj(); // false
cpf.formatted(); // "123.456.789-01"

// Com CNPJ
const cnpj = FDocumentCpfOrCnpj.createOrThrow("12345678000190");
cnpj.isCpf(); // false
cnpj.isCnpj(); // true
cnpj.formatted(); // "12.345.678/0001-90"

Métodos de instância:

  • isCpf() — retorna true se o documento tem 11 dígitos (CPF)
  • isCnpj() — retorna true se o documento tem 14 dígitos (CNPJ)
  • formatted() — formata automaticamente no padrão correspondente

Regras de validação:

  • Deve ser exatamente 11 dígitos (CPF) ou 14 dígitos (CNPJ)
  • Apenas dígitos numéricos

FDocumentRg

Número de RG brasileiro (Registro Geral / Carteira de Identidade). Aceita caracteres alfanuméricos entre 7 e 14 posições.

import { FDocumentRg } from "tyforge";

const result = FDocumentRg.create("1234567");
// Result<FDocumentRg, ExceptionValidation>

const rg = FDocumentRg.createOrThrow("12345678X");
rg.getValue(); // "12345678X"

Regras de validação:

  • Comprimento entre 7 e 14 caracteres
  • Apenas caracteres alfanuméricos (/^[a-zA-Z0-9]+$/)

FDocumentType

Tipo de documento de identificação. Validado contra o enum ODocumentType.

import { FDocumentType, ODocumentType } from "tyforge";

const result = FDocumentType.create(ODocumentType.NATIONAL_ID);
// Result<FDocumentType, ExceptionValidation>

const tipo = FDocumentType.createOrThrow("PASSPORT");
tipo.getValue(); // "PASSPORT"

Constante ODocumentType

export const ODocumentType = {
NATIONAL_ID: "NATIONAL_ID",
DRIVER_LICENSE: "DRIVER_LICENSE",
PASSPORT: "PASSPORT",
RESIDENCE_PERMIT: "RESIDENCE_PERMIT",
TAX_ID: "TAX_ID",
} as const;

Tipos relacionados

export type TKeyDocumentType = keyof typeof ODocumentType;
// "NATIONAL_ID" | "DRIVER_LICENSE" | "PASSPORT" | "RESIDENCE_PERMIT" | "TAX_ID"

export type TDocumentType = (typeof ODocumentType)[TKeyDocumentType];
// "NATIONAL_ID" | "DRIVER_LICENSE" | "PASSPORT" | "RESIDENCE_PERMIT" | "TAX_ID"

Regras de validação:

  • Aceita apenas os valores do enum ODocumentType
  • Qualquer outro valor é rejeitado

FDocumentStateRegistration

Número de inscrição estadual (IE). Armazena apenas dígitos numéricos com comprimento variável (1 a 20 caracteres).

import { FDocumentStateRegistration } from "tyforge";

const result = FDocumentStateRegistration.create("1234567890");
// Result<FDocumentStateRegistration, ExceptionValidation>

const ie = FDocumentStateRegistration.createOrThrow("1234567890");
ie.getValue(); // "1234567890"

Regras de validação:

  • Comprimento entre 1 e 20 caracteres
  • Apenas dígitos numéricos (/^\d+$/)

FDocumentMunicipalRegistration

Número de inscrição municipal (IM). Armazena apenas dígitos numéricos com comprimento variável (1 a 20 caracteres).

import { FDocumentMunicipalRegistration } from "tyforge";

const result = FDocumentMunicipalRegistration.create("987654321");
// Result<FDocumentMunicipalRegistration, ExceptionValidation>

const im = FDocumentMunicipalRegistration.createOrThrow("987654321");
im.getValue(); // "987654321"

Regras de validação:

  • Comprimento entre 1 e 20 caracteres
  • Apenas dígitos numéricos (/^\d+$/)