Skip to main content
Module

x/ahh/mod.ts>R

Idiomatic type-safety structures for TypeScript.
Go to Latest
class R
import { R } from "https://deno.land/x/ahh@v0.10.0/mod.ts";

Functionality for Result.

Static Methods

and<T, U, E extends Error>(res: Result<T, E>, other: Result<U, E>): Result<U, E>

Return other if res is Ok, or res.

Examples

import { R } from "./mod.ts";

console.log(R.and(1, 2)); // 2
console.log(R.and(Error(), 2)); // Error()
console.log(R.and(2, Error())); // Error()
console.log(R.and(Error("a"), Error("b"))); // Error("a")
contains<T, E extends Error>(res: Result<T, E>, value: T): boolean

Returns whether res strictly equals value, or false if it is an Err.

Examples

import { R } from "./mod.ts";

console.log(R.contains(1, 1)); // true
console.log(R.contains(1, 2)); // false
console.log(R.contains(Error(), 1)); // false
containsErr<T, E extends Error>(res: Result<T, E>, value: E): boolean

Returns whether res strictly equals value, or false if it is an Ok.

This only checks whether res and value have the same name and message.

Examples

import { R } from "./mod.ts";

console.log(R.containsErr(1, Error())); // false
console.log(R.containsErr(Error(), Error())); // true
console.log(R.containsErr(Error(), Error("nope"))); // false
err<T, E extends Error>(res: Result<T, E>): Option<E>

Converts res into a Some if it is an Err.

Examples

import { R } from "./mod.ts";

console.log(R.err(1)); // undefined
console.log(R.err(Error())); // Error()
fn<T, E extends Error>(f: () => T): Result<T, E>

Calls f and returns the result as an Ok, or returns an Err if it throws.

Examples

import { R } from "./mod.ts";

console.log(R.fn(() => 1)); // 1
console.log(R.fn(() => { throw Error(); })); // Error()
inspect<T, E extends Error>(res: Result<T, E>, f: (_: T) => unknown): Result<T, E>

Calls f with res, and returns the original res.

Examples

import { R } from "./mod.ts";

console.log(R.inspect(1, (i) => i + 1)); // 1
console.log(R.inspect(Error(), (i: number) => i + 1)); // Error()
inspectErr<T, E extends Error>(res: Result<T, E>, f: (_: E) => unknown): Result<T, E>

Calls f with res, and returns the original res.

Examples

import { R } from "./mod.ts";

console.log(R.inspectErr(1, () => Error("nope"))); // 1
console.log(R.inspectErr(Error(), () => Error("nope"))); // Error()
isErr<T, E extends Error>(res: Result<T, E>): res is Err<E>

Returns whether res is an Err.

Examples

import { R } from "./mod.ts";

console.log(R.isErr(1)); // false
console.log(R.isErr(Error())); // true
isOk<T, E extends Error>(res: Result<T, E>): res is Ok<T>

Returns whether res is an Ok.

Examples

import { R } from "./mod.ts";

console.log(R.isOk(1)); // true
console.log(R.isOk(Error())); // false
map<T, U, E extends Error>(res: Result<T, E>, f: (_: T) => U): Result<U, E>

Calls f with res, and returns the result.

Examples

import { R } from "./mod.ts";

console.log(R.map(1, (i) => i + 1)); // 2
console.log(R.map(Error(), (i: number) => i + 1)); // Error()
mapErr<T, E extends Error, F extends Error>(res: Result<T, E>, f: (_: E) => F): Result<T, F>

Calls f with res, and returns the result.

Examples

import { R } from "./mod.ts";

console.log(R.map(1, (_) => Error("new"))); // 1
console.log(R.map(Error(), (_) => Error("new"))); // Error("new")
ok<T, E extends Error>(res: Result<T, E>): Option<T>

Converts res into a Some if it is an Ok.

Examples

import { R } from "./mod.ts";

console.log(R.ok(1)); // 1
console.log(R.ok(Error())); // undefined
or<T, E extends Error, F extends Error>(res: Result<T, E>, other: Result<T, F>): Result<T, F>

Return res if it is an Ok, or other.

Examples

import { R } from "./mod.ts";

console.log(R.or(1, 2)); // 1
console.log(R.or<number, Error, Error>(Error(), 2)); // 2
console.log(R.or(2, Error())); // 2
console.log(R.or(Error("a"), Error("b"))); // Error("b")
unwrap<T, E extends Error>(res: Result<T, E>): res extends Ok<T> ? T : never

Returns res if it is an Ok, or throws.

Examples

import { R } from "./mod.ts";

console.log(R.unwrap(1)); // 1
R.unwrap(Error()); // throws
unwrapOr<T, E extends Error>(res: Result<T, E>, default_: T): T

Returns res if it is an Ok, or returns default_.

Examples

import { R } from "./mod.ts";

console.log(R.unwrapOr<number, Error>(1, 2)); // 1
console.log(R.unwrapOr(Error(), 2)); // 2