@eriveltondasilva/result.js
v1.0.2
Published
A lightweight, Rust-inspired Result type for JavaScript and TypeScript — handle success and error cases without exceptions.
Downloads
298
Maintainers
Readme
Result.js

Disponível em: English | Español
Um tipo Result leve e inspirado em Rust para Javascript e Typescript. Trate os casos de sucesso e erro explicitamente sem exceções.
Funcionalidades
- 🦀 API inspirada em Rust - Padrão familiar
Result<T, E> - 🎯 Type-safe - Suporte completo a Typescript com excelente inferência de tipos
- 📦 Zero dependências - Leve e focado
- 🔗 Encadeável - API fluente com
map,andThene mais - ⚡ Tree-shakeable - Tamanho de bundle otimizado
- 🛡️ Sem exceções - Tratamento seguro de erros sem try-catch
Início Rápido
Instalação
npm install @eriveltondasilva/result.jsbun add @eriveltondasilva/result.jsImportação
// Recomendado
import { Result } from '@eriveltondasilva/result.js'
// Importação padrão
import Result from '@eriveltondasilva/result.js'
// Importação de helpers - atalhos para Result.ok() e Result.err()
import { ok, err } from '@eriveltondasilva/result.js'
// Tipos de Result
import { Result, AsyncResult, Ok, Err } from '@eriveltondasilva/result.js'Uso Básico
// Criar Results
const sucesso = Result.ok(42)
// => Ok(42)
const erro = Result.err(new Error('Algo deu errado'))
// => Err(Error: 'Algo deu errado')
// Verificar e extrair
if (sucesso.isOk()) {
console.log(sucesso.unwrap())
// => 42
}
// Encadear operações
const dobrado = Result.ok(21)
.map((x) => x * 2)
.andThen((x) => Result.ok(x + 10))
.unwrap()
// => 52
// Padrão matching
const resultado = Result.ok(42).match({
ok: (valor) => valor * 2,
err: (erro) => erro.message,
})
// => 84
// Tratar erros com segurança
const resultado = Result.fromTry(
() => JSON.parse('inválido'),
(erro) => new Error(`JSON inválido: ${erro}`),
)
// => Err(Error: "JSON inválido: SyntaxError: Unexpected token, 'inválido' is not valid JSON")Documentação
Para guias abrangentes, referência de API e padrões avançados de uso, consulte a documentação completa.
Saiba mais:
Changelog
Consulte CHANGELOG.md para uma lista detalhada de mudanças em cada versão.
Contribuindo
Contribuições são bem-vindas! Por favor, leia nosso Guia de Contribuição para mais detalhes.
Licença
MIT © Erivelton Silva
Inspiração
Inspirado por:
Projetos Relacionados
- eriveltondasilva/option.js - Um tipo Option leve e inspirado em Rust para Javascript e Typescript.
import { Option } from '@eriveltondasilva/option.js'
import { Result } from '@eriveltondasilva/result.js'
const user = Option.fromNullable(null)
// => None
const userResult = user.match({
some: (val) => Result.ok(val),
none: () => Result.err('Usuário não encontrado'),
})
// => Err('Usuário não encontrado')