UNPKG

ts-data-forge

Version:

[![npm version](https://img.shields.io/npm/v/ts-data-forge.svg)](https://www.npmjs.com/package/ts-data-forge) [![npm downloads](https://img.shields.io/npm/dm/ts-data-forge.svg)](https://www.npmjs.com/package/ts-data-forge) [![License](https://img.shields.

33 lines 1.36 kB
import { type UnwrapErr, type UnwrapOk, type UnwrapWarn } from './types.mjs'; /** * Applies a function returning a `TernaryResult` to the Ok variant. * * @example * * ```ts * const parse = (value: string): 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