Skip to content
On this page

Spread Syntax

ts
type Concat<T extends Array<any>, U extends Array<any>> = [...T, ...U];

type Last<T extends any[]> = T extends [...unknown[], infer L] ? L : never;

type Pop<T extends any[]> = T extends [...infer R, unknown] ? R : never;

type AppendArgument<Fn, A> = Fn extends (...args: infer P) => infer R
  ? (...args: [...P, A]) => R
  : never;