Skip to content

whenLefts

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

whenLefts takes an array of Eithers and a function that takes the left values of the Eithers and returns a value. If any of the Eithers are Rights, then the first Right is returned. Otherwise, the function is called with the left values and its return value is returned.

Example

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

Type Parameters

Xs extends Either<unknown, unknown>[]

T

The mapped type.

Parameters

xs

readonly [Xs]

The either values.

f

(rs) => T

The map function.

Returns

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

The mapped value if right.