Introdução: o que é Valibot e para que serve?
\n\nValibot é uma biblioteca moderna, modular e leve para validação de dados em TypeScript e JavaScript. Ao contrário de gigantes como Zod ou Joi, o Valibot foi projetado com foco no tamanho mínimo do bundle e tree-shaking (capacidade de remover código não utilizado).
\n\nA filosofia principal do Valibot é "pague apenas pelo que você usa". Se você precisa validar apenas uma string quanto ao comprimento mínimo, você importa apenas string e minLength, e não a biblioteca inteira. Isso torna o Valibot a escolha ideal para projetos onde o tamanho do bundle JavaScript final é importante (por exemplo, para aplicativos móveis ou bibliotecas de componentes).
A biblioteca é totalmente tipada e oferece excelente integração com TypeScript, inferindo automaticamente os tipos a partir dos esquemas de validação. O Valibot suporta tanto primitivos simples (strings, números, booleanos) quanto estruturas complexas (objetos, arrays, tipos union, esquemas recursivos).
\n\nInstalação
\n\nO Valibot é distribuído através do gerenciador de pacotes npm. Para instalar, execute o seguinte comando no terminal do seu projeto:
\n\nnpm install valibot\n\nSe você usa yarn:
\n\nyarn add valibot\n\nPara pnpm:
\n\npnpm add valibot\n\nApós a instalação, você pode importar as funções necessárias no seu arquivo TypeScript:
\n\nimport { string, number, object, minLength, maxValue } from 'valibot';\n\nInício rápido com exemplo de código
\n\nVamos criar um esquema de validação simples para um formulário de registro de usuário. Validaremos nome, email e idade.
\n\nimport { object, string, number, email, minLength, maxValue, safeParse } from 'valibot';\n\n// 1. Definir o esquema\nconst UserSchema = object({\n name: string([minLength(2, 'O nome deve ter no mínimo 2 caracteres')]),\n email: string([email('Email inválido')]),\n age: number([maxValue(120, 'A idade não pode ser maior que 120')])\n});\n\n// 2. Dados para validar\nconst inputData = {\n name: 'Ana',\n email: 'ana@exemplo.com',\n age: 30\n};\n\n// 3. Validar\nconst result = safeParse(UserSchema, inputData);\n\nif (result.success) {\n console.log('Dados válidos:', result.output);\n // result.output tem o tipo { name: string; email: string; age: number; }\n} else {\n console.error('Erros de validação:', result.issues);\n // result.issues — array de objetos com descrição dos erros\n}\n\nNeste exemplo, usamos safeParse — um método seguro que não lança exceção, mas retorna um objeto com o campo success. Se a validação for bem-sucedida, result.output conterá os dados validados com os tipos corretos.
Métodos e funções principais
\n\nO Valibot fornece várias funções para criar esquemas. Vamos ver as mais importantes.
\n\n1. string()
\nO que faz: Cria um esquema para validação de valores string. Aceita um array opcional de validadores para verificações adicionais (comprimento, padrão, etc.).
\nParâmetros:
\n- \n
validations(opcional): array de funções validadoras, comominLength,maxLength,email,url,regexe outras. \n
Exemplo:
\nimport { string, minLength, maxLength, email } from 'valibot';\n\nconst UsernameSchema = string([minLength(3), maxLength(20)]);\nconst EmailSchema = string([email()]);\n\nconsole.log(safeParse(UsernameSchema, 'Jo')); // { success: false, issues: [...] }\nconsole.log(safeParse(EmailSchema, 'teste@teste.com')); // { success: true, output: 'teste@teste.com' }\n\n2. number()
\nO que faz: Cria um esquema para validação de valores numéricos. Suporta c
Também na biblioteca
Programação Reativa em C# (.NET) — Observable, Rx.NET e LINQ
Trabalho com XML em Java: DOM, SAX, StAX e JAXB — guia completo
Trabalhando com Excel em Go (Golang): bibliotecas exelize e tealeg/xlsx
Frameworks CLI para Go (Golang): visão geral completa e comparação
Cliente HTTP para Kotlin: Principais bibliotecas para trabalhar com rede