export interface PromiseFulfilledResult { status: "fulfilled"; value: T; } export interface PromiseRejectedResult { status: "rejected"; reason: any; } export type PromiseSettledResult = PromiseFulfilledResult | PromiseRejectedResult; export type Resolvable = R | PromiseLike export type IterateFunction = (item: T, index: number | string) => Resolvable;