Function: orElse()

Chains the next computation using the error value of a Result or ResultAsync. If the original result is a Success, it is returned unchanged. Otherwise, the provided function is called, and its result is returned as-is.

Type Param

The input Result or ResultAsync.

Type Param

The result type returned by fn.

Examples

import { Result } from '@praha/byethrow';

const result = Result.pipe(
  Result.succeed(42),
  Result.orElse((error) => Result.succeed(0)),
);
// { type: 'Success', value: 42 }
const result = Result.pipe(
  Result.fail('original error'),
  Result.orElse((error) => Result.succeed('default value')),
);
// result: { type: 'Success', value: 'default value' }
const result = Result.pipe(
  Result.fail('original error'),
  Result.orElse((error) => Result.fail('new error: ' + error)),
);
// result: { type: 'Failure', error: 'new error: original error' }

See

pipe - It is recommended to use this function with the pipe function for better readability and composability.

Call Signature

orElse<R1, R2>(fn): (result) => ResultFor<R1 | R2, InferSuccess<R1> | InferSuccess<R2>, InferFailure<R2>>

Defined in: functions/or-else.ts:51

Type Parameters

R1

R1 extends ResultMaybeAsync<any, any>

R2

R2 extends ResultMaybeAsync<any, any>

Parameters

fn

(a) => R2

Returns

(result): ResultFor<R1 | R2, InferSuccess<R1> | InferSuccess<R2>, InferFailure<R2>>

Parameters

result

R1

Returns

ResultFor<R1 | R2, InferSuccess<R1> | InferSuccess<R2>, InferFailure<R2>>

Call Signature

orElse<F>(fn): <R1>(result) => ResultFor<R1 | ReturnType<F>, InferSuccess<R1> | InferSuccess<F>, InferFailure<F>>

Defined in: functions/or-else.ts:52

Type Parameters

F

F extends (a) => ResultMaybeAsync<any, any>

Parameters

fn

F

Returns

<R1>(result): ResultFor<R1 | ReturnType<F>, InferSuccess<R1> | InferSuccess<F>, InferFailure<F>>

Type Parameters

R1

R1 extends ResultMaybeAsync<any, Parameters<F>[0]>

Parameters

result

R1

Returns

ResultFor<R1 | ReturnType<F>, InferSuccess<R1> | InferSuccess<F>, InferFailure<F>>