export type Key = keyof any; export type AnyFunction = (...args: any[]) => any; export type Resolver = (value: T | PromiseLike) => void; export type Rejecter = (reason?: unknown) => void; export type Async = (...args: Parameters) => Promise>; export type JsonValue = null | boolean | number | string | JsonValue[] | { [k: string]: JsonValue; }; export type Cloneable = undefined | null | boolean | number | string | Cloneable[] | { [k: string]: Cloneable; } | ArrayBuffer | DataView | Date | Error | Map | RegExp | Set | Uint8ClampedArray | Uint8Array | Uint16Array | Uint32Array | BigUint64Array | Int8Array | Int16Array | Int32Array | BigInt64Array | Float32Array | Float64Array; export type LaxPartial = { [K in keyof T]?: T[K] | undefined; }; export type Slice1 = T extends [any, ...infer TRest] ? TRest : never; export type Falsy = false | "" | 0 | 0n | null | undefined; export type NonFalsy = T extends Falsy ? never : T; export type Pretty = { [K in keyof T]: T[K]; }; export type Intersect = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never; export type Values = T[keyof T]; export type PickByValue = { [K in keyof T as T[K] extends U ? K : never]: T[K]; }; export type Entries = { [K in keyof T]: [K, T[K]]; }[keyof T]; export type FromEntries = { [TEntry in U as TEntry[0]]: TEntry[1]; }; export type Replace = Omit & B; export type UnionToIntersection = (T extends any ? (_: T) => void : never) extends ((_: infer I) => void) ? I : never;