// https://stackoverflow.com/a/53395649/4573065 export type AllOf = ['Needs to be all of', T]; export function allOf(): ( ...array: U & ([T] extends [U[number]] ? unknown : AllOf[]) ) => U & ([T] extends [U[number]] ? unknown : AllOf[]) { return (...array) => array; }