Skip to content

True Myth / result / mapOrElse

Function: mapOrElse()

Call Signature

mapOrElse<T, U, E>(orElseFn, mapFn, result): U

Map over a Result instance as in map and get out the value if result is Ok, or apply a function (orElseFn) to the value wrapped in the Err to get a default value.

Like mapOr but using a function to transform the error into a usable value instead of simply using a default value.

Examples

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

const summarize = (s: string) => `The response was: '${s}'`;
const getReason = (err: { code: number, reason: string }) => err.reason;

const okResponse = ok("Things are grand here.");
const mappedOkAndUnwrapped = mapOrElse(getReason, summarize, okResponse);
console.log(mappedOkAndUnwrapped);  // The response was: 'Things are grand here.'

const errResponse = err({ code: 500, reason: 'Nothing at this endpoint!' });
const mappedErrAndUnwrapped = mapOrElse(getReason, summarize, errResponse);
console.log(mappedErrAndUnwrapped);  // Nothing at this endpoint!

Type Parameters

T

T

The type of the wrapped Ok value.

U

U

The type of the resulting value from applying mapFn to the Ok value or orElseFn to the Err value.

E

E

The type of the wrapped Err value.

Parameters

orElseFn

(err) => U

The function to apply to the wrapped Err value to get a usable value if result is an Err.

mapFn

(t) => U

The function to apply to the wrapped Ok value if result is an Ok.

result

Result<T, E>

The Result instance to map over.

Returns

U

Call Signature

mapOrElse<T, U, E>(orElseFn, mapFn): (result) => U

Map over a Result instance as in map and get out the value if result is Ok, or apply a function (orElseFn) to the value wrapped in the Err to get a default value.

Like mapOr but using a function to transform the error into a usable value instead of simply using a default value.

Examples

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

const summarize = (s: string) => `The response was: '${s}'`;
const getReason = (err: { code: number, reason: string }) => err.reason;

const okResponse = ok("Things are grand here.");
const mappedOkAndUnwrapped = mapOrElse(getReason, summarize, okResponse);
console.log(mappedOkAndUnwrapped);  // The response was: 'Things are grand here.'

const errResponse = err({ code: 500, reason: 'Nothing at this endpoint!' });
const mappedErrAndUnwrapped = mapOrElse(getReason, summarize, errResponse);
console.log(mappedErrAndUnwrapped);  // Nothing at this endpoint!

Type Parameters

T

T

The type of the wrapped Ok value.

U

U

The type of the resulting value from applying mapFn to the Ok value or orElseFn to the Err value.

E

E

The type of the wrapped Err value.

Parameters

orElseFn

(err) => U

The function to apply to the wrapped Err value to get a usable value if result is an Err.

mapFn

(t) => U

The function to apply to the wrapped Ok value if result is an Ok.

Returns

(result): U

Parameters

result

Result<T, E>

Returns

U

Call Signature

mapOrElse<T, U, E>(orElseFn): (mapFn) => (result) => U

Map over a Result instance as in map and get out the value if result is Ok, or apply a function (orElseFn) to the value wrapped in the Err to get a default value.

Like mapOr but using a function to transform the error into a usable value instead of simply using a default value.

Examples

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

const summarize = (s: string) => `The response was: '${s}'`;
const getReason = (err: { code: number, reason: string }) => err.reason;

const okResponse = ok("Things are grand here.");
const mappedOkAndUnwrapped = mapOrElse(getReason, summarize, okResponse);
console.log(mappedOkAndUnwrapped);  // The response was: 'Things are grand here.'

const errResponse = err({ code: 500, reason: 'Nothing at this endpoint!' });
const mappedErrAndUnwrapped = mapOrElse(getReason, summarize, errResponse);
console.log(mappedErrAndUnwrapped);  // Nothing at this endpoint!

Type Parameters

T

T

The type of the wrapped Ok value.

U

U

The type of the resulting value from applying mapFn to the Ok value or orElseFn to the Err value.

E

E

The type of the wrapped Err value.

Parameters

orElseFn

(err) => U

The function to apply to the wrapped Err value to get a usable value if result is an Err.

Returns

(mapFn): (result) => U

Parameters

mapFn

(t) => U

Returns

(result): U

Parameters
result

Result<T, E>

Returns

U