ts-data-forge
Version:
[](https://www.npmjs.com/package/ts-data-forge) [](https://www.npmjs.com/package/ts-data-forge) [: TernaryResult<number, string, string> =>
* Number.isNaN(Number(value))
* ? TernaryResult.err('NaN')
* : TernaryResult.ok(Number(value));
*
* const doubled = TernaryResult.flatMap(TernaryResult.ok('3'), (text) =>
* TernaryResult.map(parse(text), (num) => num * 2),
* );
*
* const warnPassthrough = TernaryResult.flatMap(
* TernaryResult.warn('3', 'retry'),
* parse,
* );
*
* const errPassthrough = TernaryResult.flatMap(TernaryResult.err('oops'), parse);
*
* assert.deepStrictEqual(doubled, TernaryResult.ok(6));
*
* assert.deepStrictEqual(warnPassthrough, TernaryResult.warn(3, 'retry'));
*
* assert.deepStrictEqual(errPassthrough, TernaryResult.err('oops'));
* ```
*/
export declare function flatMap<R extends UnknownTernaryResult, S2, W2, E2>(result: R, flatMapFn: (value: UnwrapOk<R>) => TernaryResult<S2, E2, W2>): TernaryResult<S2, E2 | UnwrapErr<R>, W2 | UnwrapWarn<R>>;
export declare function flatMap<S, S2, W2, E2>(flatMapFn: (value: S) => TernaryResult<S2, E2, W2>): <W, E>(result: TernaryResult<S, E, W>) => TernaryResult<S2, E | E2, W | W2>;
//# sourceMappingURL=ternary-result-flat-map.d.mts.map