Function when

  • Curried conditional (like a functional ternary).

    Example

    const isEven = (value: number) => value % 2 === 0;
    const whenIsEven = when(isEven);
    const double = (value: number) => value * 2;
    const doubleWhenEven = whenIsEven(double);
    const triple = (value: number) => value * 3;
    const tripleWhenOdd = whenIsEven(triple);

    tripleWhenOdd(2); // 4
    tripleWhenOdd(3); // 9

    Returns

    Curried function with predicate in context.

    Type Parameters

    • Value

    • Predicated = Value

    Parameters

    • predicate: Predicate<Value, Predicated>

      Predicate to check value against.

    Returns (<TrueOutput>(truthyHandler: Unary<Predicated & Value, TrueOutput>) => (<FalseInput, FalseOutput>(falsyHandler: Unary<FalseInput, FalseOutput>) => ((value: Value) => TrueOutput | FalseOutput)))

      • <TrueOutput>(truthyHandler: Unary<Predicated & Value, TrueOutput>): (<FalseInput, FalseOutput>(falsyHandler: Unary<FalseInput, FalseOutput>) => ((value: Value) => TrueOutput | FalseOutput))
      • Type Parameters

        • TrueOutput

        Parameters

        • truthyHandler: Unary<Predicated & Value, TrueOutput>

        Returns (<FalseInput, FalseOutput>(falsyHandler: Unary<FalseInput, FalseOutput>) => ((value: Value) => TrueOutput | FalseOutput))

          • <FalseInput, FalseOutput>(falsyHandler: Unary<FalseInput, FalseOutput>): ((value: Value) => TrueOutput | FalseOutput)
          • Type Parameters

            • FalseInput = Value extends Predicated ? Value : Predicated

            • FalseOutput = TrueOutput

            Parameters

            • falsyHandler: Unary<FalseInput, FalseOutput>

            Returns ((value: Value) => TrueOutput | FalseOutput)

              • (value: Value): TrueOutput | FalseOutput
              • Parameters

                • value: Value

                Returns TrueOutput | FalseOutput