Function: flatten()
flatten<
T
,E
,F
>(nestedTask
):Task
<T
,E
|F
>
Given a nested Task
, remove one layer of nesting.
For example, given a Task<Task<string, E2>, E1>
, the resulting type after using this function will be Task<string, E1 | E2>
.
Note
This function only works when the value wrapped in Task
is another Task
. If you have a Task<string, E>
or Task<number, E>
, this function won't work. If you have a Task<Task<string, E2>, E1>
, then you can call .flatten()
to get back a Task<string, E1 | E2>
.
Examples
ts
import * as task from 'true-myth/task';
const nested = task.resolve(task.resolve('hello'));
const flattened = task.flatten(nested); // Task<string, never>
await flattened;
console.log(flattened); // `Resolved('hello')`
const nestedError = task.resolve(task.reject('inner error'));
const flattenedError = task.flatten(nestedError); // Task<never, string>
await flattenedError;
console.log(flattenedError); // `Rejected('inner error')`
const errorNested = task.reject<Task<string, string>, string>('outer error');
const flattenedOuter = task.flatten(errorNested); // Task<string, string>
await flattenedOuter;
console.log(flattenedOuter); // `Rejected('outer error')`
Type Parameters
T
T
E
E
F
F
Parameters
nestedTask
Returns
Task
<T
, E
| F
>