‘liusuyi’
2023-07-03 c8be57b6de00472cc5f6c4f9a8b15c9af7740fe8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import { OperatorFunction } from "../types";
import { map } from "../operators/map";
 
const { isArray } = Array;
 
function callOrApply<T, R>(fn: ((...values: T[]) => R), args: T|T[]): R {
    return isArray(args) ? fn(...args) : fn(args);
}
 
/**
 * Used in several -- mostly deprecated -- situations where we need to 
 * apply a list of arguments or a single argument to a result selector.
 */
export function mapOneOrManyArgs<T, R>(fn: ((...values: T[]) => R)): OperatorFunction<T|T[], R> {
    return map(args => callOrApply(fn, args))
}