Skip to content

True Myth / result / flatten

Function: flatten()

flatten<T, E1, E2>(nested): Result<T, E1 | E2>

Given a nested Result, remove one layer of nesting.

For example, given a Result<Result<string, E2>, E1>, the resulting type after using this function will be Result<string, E1 | E2>.

Note

This function only works when the value wrapped in Result is another Result. If you have a Result<string, E> or Result<number, E>, this function won't work. If you have a Result<Result<string, E2>, E1>, then you can call result.flatten(theResult) to get back a Result<string, E1 | E2>.

Examples

ts
import * as result from 'true-myth/result';

const nested = result.ok(result.ok('hello'));
const flattened = result.flatten(nested); // Result<string, never>
console.log(flattened); // Ok('hello')

const nestedError = result.ok(result.err('inner error'));
const flattenedError = result.flatten(nestedError); // Result<never, string>
console.log(flattenedError); // Err('inner error')

const errorNested = result.err<Result<string, string>, string>('outer error');
const flattenedOuter = result.flatten(errorNested); // Result<string, string>
console.log(flattenedOuter); // Err('outer error')

Type Parameters

T

T

E1

E1

E2

E2

Parameters

nested

Result<Result<T, E2>, E1>

Returns

Result<T, E1 | E2>