@cffnpwr/result-ts
v1.1.1
Published
Rust like Result type for TypeScript
Readme
result-ts
Rust-like Result/Option type implementation for TypeScript.
Installation
npm
npm install @cffnpwr/result-tsor
npx jsr add @cffnpwr/result-tsyarn
yarn add @cffnpwr/result-tsor
yarn dlx jsr add @cffnpwr/result-tspnpm
pnpm add @cffnpwr/result-tsor
pnpm dlx jsr add @cffnpwr/result-tsBun
bun add @cffnpwr/result-tsor
bunx jsr add @cffnpwr/result-tsDeno
deno add npm:@cffnpwr/result-tsor
deno add jsr:@cffnpwr/result-tsHow to Use
Result type
import { type Result, Ok, Err } from "@cffnpwr/result-ts";
const result1: Result<number, string> = Ok(42);
const result2: Result<number, string> = Err("error");
console.log(result1.isOk()); // true
console.log(result1.isErr()); // false
console.log(result1.unwrap()); // 42
console.log(result2.isOk()); // false
console.log(result2.isErr()); // true
console.log(result2.unwrapErr()); // "error"
// Transform values
const doubled = result1.map((n) => n * 2);
console.log(doubled.unwrap()); // 84
// Chain operations
const parsed: Result<number, string> = Ok("42").andThen((s) => {
const n = Number(s);
return Number.isNaN(n) ? Err("not a number") : Ok(n);
});
console.log(parsed.unwrap()); // 42Option type
import { type Option, Some, None } from "@cffnpwr/result-ts";
const some: Option<number> = Some(42);
const none: Option<number> = None();
console.log(some.isSome()); // true
console.log(some.isNone()); // false
console.log(some.unwrap()); // 42
console.log(none.isSome()); // false
console.log(none.isNone()); // true
console.log(none.unwrapOr(-1)); // -1
// Convert to Result
const result = none.okOr("no value");
console.log(result.isErr()); // true
console.log(result.unwrapErr()); // "no value"API Reference
See docs/API.md for full API documentation.
