export type PartialRequired = { [key in keyof T]?: T[key]; } & { [key in Required]: T[key]; }; export type Normalize = { [K in keyof T]: T[K]; }; export type AnyRecord = Record; export type AnyArray = any[]; export type EmptyObject = {}; export type Unsubscribe = (abort?: boolean) => void; export type StringIndexable = { [P in keyof T as P extends string ? `${P}` | P : P]: T[P]; }; export type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;