Skip to content

True Myth / result / unwrapOrElse

Function: unwrapOrElse() ​

Call Signature ​

unwrapOrElse<T, U, E>(orElseFn, result): T | U

Safely get the value out of a Result by returning the wrapped value if it is Ok, or by applying orElseFn to the value in the Err.

This is useful when you need to generate a value (e.g. by using current values in the environment – whether preloaded or by local closure) instead of having a single default value available (as in unwrapOr).

ts
import { ok, err, unwrapOrElse } from 'true-myth/result';

// You can imagine that someOtherValue might be dynamic.
const someOtherValue = 2;
const handleErr = (errValue: string) => errValue.length + someOtherValue;

const anOk = ok<number, string>(42);
console.log(unwrapOrElse(handleErr, anOk));  // 42

const anErr = err<number, string>('oh teh noes');
console.log(unwrapOrElse(handleErr, anErr));  // 13

Type Parameters ​

T ​

T

The value wrapped in the Ok.

U ​

U

E ​

E

The value wrapped in the Err.

Parameters ​

orElseFn ​

(error) => U

A function applied to the value wrapped in result if it is an Err, to generate the final value.

result ​

Result<T, E>

The result to unwrap if it is an Ok.

Returns ​

T | U

The value wrapped in result if it is Ok or the value returned by orElseFn applied to the value in Err.

Call Signature ​

unwrapOrElse<T, U, E>(orElseFn): (result) => T | U

Safely get the value out of a Result by returning the wrapped value if it is Ok, or by applying orElseFn to the value in the Err.

This is useful when you need to generate a value (e.g. by using current values in the environment – whether preloaded or by local closure) instead of having a single default value available (as in unwrapOr).

ts
import { ok, err, unwrapOrElse } from 'true-myth/result';

// You can imagine that someOtherValue might be dynamic.
const someOtherValue = 2;
const handleErr = (errValue: string) => errValue.length + someOtherValue;

const anOk = ok<number, string>(42);
console.log(unwrapOrElse(handleErr, anOk));  // 42

const anErr = err<number, string>('oh teh noes');
console.log(unwrapOrElse(handleErr, anErr));  // 13

Type Parameters ​

T ​

T

The value wrapped in the Ok.

U ​

U

E ​

E

The value wrapped in the Err.

Parameters ​

orElseFn ​

(error) => U

A function applied to the value wrapped in result if it is an Err, to generate the final value.

Returns ​

The value wrapped in result if it is Ok or the value returned by orElseFn applied to the value in Err.

(result) => T | U