type Void = T | void; type Optional = T | null | undefined; type Nullable = { [P in keyof T]: T[P] | null; }; type Writable = { -readonly [P in keyof T]: T[P] }; type KeyOfType = { [K in keyof T]: K extends U ? T[K] extends V ? K : never : never }[keyof T]; type MapOfType = { [K in KeyOfType]: K extends U ? T[K] extends V ? T[K] : never : never }; type Constructor = new(...args: any[]) => T; type ConstructorDerived = Pick any ? never : K }[keyof T]>; type FunctionType = (...args: U[]) => T; type FunctionReturn = (...args: U[]) => T; type FunctionArgs = (...args: T) => U; type IntBool = boolean | 0 | 1; type ArrayOf = T | T[]; type FirstOf = T extends U ? [T, ...T[]] : T[] | [U, T, ...T[]]; type Bufferable = string | Buffer; type AnyObject = Record; type PlainObject = Record; type StandardMap = Record; type StringMap = Record; type ObjectMap = Record; type IterableMap = Record; type PropertyAction = { [K in keyof T as `${U}${V extends true ? string & K : Capitalize}`]: T[K]; };