type _SpreadFn = (...args: Arg[]) => Return type _ArrayFn = (args: Arg[]) => Return // This function takes either (...args: Arg[]) spread or (args: Arg[]) array argument export type ArrayOrSpreadFn = _SpreadFn & _ArrayFn