Skip to main content

flip()

flip<First, Second, Rest, Result>(fn): (b, a, ...rest) => Result

Creates a function with its first two arguments reversed.


Type Parameters​

First: First​

The first argument type.

Second: Second​

The second argument type.

Rest: Rest extends unknown[]​

The remaining argument types.

Result: Result​

The return type.


Parameters​

fn: (a, b, ...rest) => Result​

The function to flip.


Returns​

The flipped function.


Since​

2.0.0


Also known as​

flip (Lodash, es-toolkit, Remeda, Radashi, Ramda, Effect) · ❌ (Modern Dash, Antfu)


Example​

const divide = (a: number, b: number) => a / b;
const divideBy = flip(divide);

divide(10, 2); // => 5
divideBy(2, 10); // => 5

How it works?​

Creates a function with its first two arguments reversed.

Argument Swap​


Use Cases​

Create natural APIs πŸ“Œβ€‹

Reverse function parameters to create more intuitive and readable function interfaces. Essential for API design and improving code readability.

const greet = (name, greeting) => `${greeting}, ${name}!`;
const greetReverse = flip(greet);

greetReverse("Hello", "World"); // "Hello, World!" (flipped)

Enable currying patterns​

Reverse parameters to enable currying and partial application for functional programming. Critical for functional programming and creating reusable function components.

const map = (fn, array) => array.map(fn);
const mapFlipped = flip(map);

// Now data comes last, easier to curry or pipe
const doubleAll = (arr) => mapFlipped(arr, n => n * 2);