/// /** * Equivalent to the builtin Partial just recursive. * * @see https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype */ export type PartialRecursive = { [P in keyof T]?: T[P] extends (infer U)[] ? PartialRecursive[] : T[P] extends Record ? PartialRecursive : T[P]; }; /** * Converts a type from Promise to T. * * This does not unwrap recursively. */ export type UnwrapPromise = T extends Promise ? U : T extends (...args: unknown[]) => Promise ? U : T extends (...args: unknown[]) => infer U ? U : T; /** * The return type of setTimeout, this type be used with clearTimeout * * This exists because the return type is different on the web versus node * */ export type SetTimeoutToken = ReturnType; /** * The return type of `setInterval`. This type can be used with `clearInterval`. */ export type SetIntervalToken = ReturnType; export declare function IsNodeTimeout(timer: number | NodeJS.Timeout): timer is NodeJS.Timeout; export type Constructor = new (...args: any[]) => T; export declare function HasOwnProperty(obj: X, prop: Y): boolean; export type WithNonNull = T & { [P in K]: NonNullable; }; export type WithRequired = T & { [P in K]-?: T[P]; }; export type NonUndefined = T extends undefined ? never : T; //# sourceMappingURL=types.d.ts.map