Skip to main content

Result<T, E>

A result monad that can either be a success or an error.
T
type parameter
The type of the success value
E
type parameter
The type of the error value
Result<T, E>
ResultOk<T> | ResultErr<E>
A discriminated union type that is either a success or an error

Example

import { type Result, ok, err } from "@temelj/result";

function divide(a: number, b: number): Result<number, string> {
  if (b === 0) {
    return err("Division by zero");
  }
  return ok(a / b);
}

const result = divide(10, 2);
if (result.kind === "ok") {
  console.log(result.value); // 5
}

ResultOk<T>

A result value that is a success.
T
type parameter
The type of the success value
kind
'ok'
required
Discriminant property that identifies this as a success result
value
T
required
The success value

Example

import { type ResultOk } from "@temelj/result";

const success: ResultOk<number> = {
  kind: "ok",
  value: 42,
};

ResultErr<E>

A result value that is an error.
E
type parameter
The type of the error value
kind
'error'
required
Discriminant property that identifies this as an error result
error
E
required
The error value

Example

import { type ResultErr } from "@temelj/result";

const error: ResultErr<string> = {
  kind: "error",
  error: "Something went wrong",
};

Build docs developers (and LLMs) love