/** * A function that takes parameters and returns a value. * * @template U The type of the return value. * @template P The type of the parameters. * @template T The type of the `this` context. * @example Function // (a: number, b: string) => boolean */ type Function = T extends void ? (...args: P) => U : (this: T, ...args: P) => U; export type { Function };