// error Don't use `{}` as a type. `{}` actually means "any non-nullish value". // - If you want a type meaning "any object", you probably want `Record` instead. // - If you want a type meaning "any value", you probably want `unknown` instead. // - If you want a type meaning "empty object", you probably want `Record` instead @typescript-eslint/ban-types export type AnyObject = Record; export type EmptyObject = Record; export type StringObject = Record; export type OneOrMore = T | T[]; export type Unset = undefined | null; export type ZeroOrMore = Unset | OneOrMore; export type NonEmptyArray = [T, ...T[]] /* eslint-disable @typescript-eslint/no-explicit-any */ export type IsEmptyArray = T extends any[] ? T extends NonEmptyArray ? false : true : false /* eslint-enable @typescript-eslint/no-explicit-any */