2026-05-31 13:54:31 +02:00

25 lines
707 B
JavaScript

//#region src/compat/function/flip.ts
/**
* Reverses the order of arguments for a given function.
*
* @template F - The type of the function being flipped.
* @param {F} func - The function whose arguments will be reversed.
* @returns {(...args: Reversed<Parameters<F>>) => ReturnType<F>} A new function that takes the
* reversed arguments and returns the result of calling `func`.
*
* @example
* function fn(a: string, b: string, c: string, d: string) {
* return [a, b, c, d];
* }
*
* const flipped = flip(fn);
* flipped('a', 'b', 'c', 'd'); // => ['d', 'c', 'b', 'a']
*/
function flip(func) {
return function(...args) {
return func.apply(this, args.reverse());
};
}
//#endregion
exports.flip = flip;