Skip to content

whenRights

whenRights<Xs, T>(xs, f): ArgRights<Xs> extends never[] ? Left<ArgLefts<Xs>[number]> : ArgLefts<Xs>[number] extends never[] ? T : Left<ArgLefts<Xs>[number]> | T

whenRights takes an array of Eithers and a function that takes the rights of the Eithers as arguments and returns a Left if any of the Eithers are Lefts or the result of the function if all of the Eithers are Rights.

Example

whenRights([{ right: 'foo' }, { right: 'bar' }], ([x0, x1]) => ({right: `${x0}${x1}`}))
// => { right: "foobar"}
whenRights([{ left: 'bar' }, { right: 'fooz' }], ([x0, x1]) => ({right: `${x0}${x1}`}))
// => { left: "bar" }

Type Parameters

Xs extends Either<unknown, unknown>[]

T extends Either<unknown, unknown>

The mapped type.

Parameters

xs

readonly [Xs]

The either values.

f

(rs) => T

The map function.

Returns

ArgRights<Xs> extends never[] ? Left<ArgLefts<Xs>[number]> : ArgLefts<Xs>[number] extends never[] ? T : Left<ArgLefts<Xs>[number]> | T

The mapped value if right.