ts-data-forge
    Preparing search index...
    • Applies one of two functions depending on whether the Result is Ok or Err.

      Type Parameters

      • R extends Result.Base

        The input Result.Base type.

      • S2

        The type of the success value returned by mapFn.

      • E2

        The type of the error value returned by mapErrFn.

      Parameters

      • result: R

        The Result to fold.

      • mapFn: (value: UnwrapOk<R>) => S2

        The function to apply if result is Ok.

      • mapErrFn: (error: UnwrapErr<R>) => E2

        The function to apply if result is Err.

      Returns Result<S2, E2>

      A new Result<S2, E2> based on the applied function.

      const okValue = Result.ok(2);
      const errValue = Result.err('bad');

      const foldedOk = Result.fold(
      okValue,
      (value) => value * 2,
      (error) => error,
      );
      const foldedErr = Result.fold(
      errValue,
      (value: number) => value * 2,
      (error) => error.toUpperCase(),
      );

      assert.deepStrictEqual(foldedOk, Result.ok(4));
      assert.deepStrictEqual(foldedErr, Result.err('BAD'));

      const foldNumbers = Result.fold(
      (value: number) => value * 3,
      (error: string) => error.length,
      );

      assert.deepStrictEqual(foldNumbers(Result.ok(3)), Result.ok(9));
      assert.deepStrictEqual(foldNumbers(Result.err('oops')), Result.err(4));
    • Applies one of two functions depending on whether the Result is Ok or Err.

      Type Parameters

      • S
      • E
      • S2

        The type of the success value returned by mapFn.

      • E2

        The type of the error value returned by mapErrFn.

      Parameters

      • mapFn: (value: S) => S2

        The function to apply if result is Ok.

      • mapErrFn: (error: E) => E2

        The function to apply if result is Err.

      Returns (result: Result<S, E>) => Result<S2, E2>

      A new Result<S2, E2> based on the applied function.

      const okValue = Result.ok(2);
      const errValue = Result.err('bad');

      const foldedOk = Result.fold(
      okValue,
      (value) => value * 2,
      (error) => error,
      );
      const foldedErr = Result.fold(
      errValue,
      (value: number) => value * 2,
      (error) => error.toUpperCase(),
      );

      assert.deepStrictEqual(foldedOk, Result.ok(4));
      assert.deepStrictEqual(foldedErr, Result.err('BAD'));

      const foldNumbers = Result.fold(
      (value: number) => value * 3,
      (error: string) => error.length,
      );

      assert.deepStrictEqual(foldNumbers(Result.ok(3)), Result.ok(9));
      assert.deepStrictEqual(foldNumbers(Result.err('oops')), Result.err(4));