ts-data-forge
    Preparing search index...
    • Applies a function that returns an Optional to the value in an Optional.Some. If the input is Optional.None, returns Optional.None. This is the monadic bind operation for Optional.

      Type Parameters

      • O extends Optional.Base

        The input Optional.Base type.

      • S2

        The value type of the Optional returned by the function.

      Parameters

      • optional: O

        The Optional to flat map.

      • flatMapFn: (value: Unwrap<O>) => Optional<S2>

        The function to apply that returns an Optional.

      Returns Optional<S2>

      The result of applying the function, or Optional.None.

      const parseNumber = (input: string): Optional<number> => {
      const num = Number.parseInt(input, 10);
      return Number.isNaN(num) ? Optional.none : Optional.some(num);
      };

      const parsed = Optional.flatMap(Optional.some('10'), parseNumber);

      assert.deepStrictEqual(parsed, Optional.some(10));

      const flatMapParse = Optional.flatMap(parseNumber);

      assert.deepStrictEqual(flatMapParse(Optional.some('5')), Optional.some(5));
      assert.deepStrictEqual(flatMapParse(Optional.some('invalid')), Optional.none);
    • Applies a function that returns an Optional to the value in an Optional.Some. If the input is Optional.None, returns Optional.None. This is the monadic bind operation for Optional.

      Type Parameters

      • S
      • S2

        The value type of the Optional returned by the function.

      Parameters

      • flatMapFn: (value: S) => Optional<S2>

        The function to apply that returns an Optional.

      Returns (optional: Optional<S>) => Optional<S2>

      The result of applying the function, or Optional.None.

      const parseNumber = (input: string): Optional<number> => {
      const num = Number.parseInt(input, 10);
      return Number.isNaN(num) ? Optional.none : Optional.some(num);
      };

      const parsed = Optional.flatMap(Optional.some('10'), parseNumber);

      assert.deepStrictEqual(parsed, Optional.some(10));

      const flatMapParse = Optional.flatMap(parseNumber);

      assert.deepStrictEqual(flatMapParse(Optional.some('5')), Optional.some(5));
      assert.deepStrictEqual(flatMapParse(Optional.some('invalid')), Optional.none);