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'));
Applies a function returning a TernaryResult to the Ok variant.
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'));
Applies a function returning a
TernaryResultto the Ok variant.