aboutsummaryrefslogtreecommitdiff
path: root/src/definitions/utils.ts
blob: b7b826a1657665ff92397bbd726cb5ee106f6728 (plain)
1
2
3
4
5
6
7
8
// https://stackoverflow.com/a/53395649/4573065
export type AllOf<T> = ['Needs to be all of', T];

export function allOf<T>(): <U extends T[]>(
  ...array: U & ([T] extends [U[number]] ? unknown : AllOf<T>[])
) => U & ([T] extends [U[number]] ? unknown : AllOf<T>[]) {
  return (...array) => array;
}