25 lines
707 B
JavaScript
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;
|