ts-data-forge
Version:
[](https://www.npmjs.com/package/ts-data-forge) [](https://www.npmjs.com/package/ts-data-forge) [ • 1.15 kB
JavaScript
import { isOk } from './result-is-ok.mjs';
import { ok } from './result-ok.mjs';
/**
* Combines two `Result` values into a single `Result` containing a tuple. If
* either `Result` is `Err`, returns the first `Err` encountered.
*
* @example
*
* ```ts
* const first = Result.ok('left');
*
* const second = Result.ok(1);
*
* const expected = ['left', 1] as const;
*
* assert.deepStrictEqual(Result.zip(first, second), Result.ok(expected));
*
* assert.deepStrictEqual(
* Result.zip(first, Result.err('error')),
* Result.err('error'),
* );
* ```
*
* @template S1 The success type of the first `Result`.
* @template E1 The error type of the first `Result`.
* @template S2 The success type of the second `Result`.
* @template E2 The error type of the second `Result`.
* @param resultA The first `Result`.
* @param resultB The second `Result`.
* @returns A `Result` containing a tuple of both values, or the first `Err`.
*/
const zip = (resultA, resultB) => isOk(resultA)
? isOk(resultB)
? ok([resultA.value, resultB.value])
: resultB
: resultA;
export { zip };
//# sourceMappingURL=result-zip.mjs.map