type Meta = number | string type Vec2 = [T, T] type Maybe = T | null | undefined type MaybeGroup = Maybe type AnyObject = Record type Padding = [T, T, T, T] type AnyFunction = (...args: any) => T type Ungroup = T extends Array ? Ungroup : Maybe type ArrayItem = T extends Array ? V : T type Newable = new (...args: P extends [...infer V] ? V : [P]) => T type Computable = T | ((props: P) => T) type Keys = T extends Set ? K : T extends Map ? K : T extends Record ? K : keyof T