pragmatic-fp-ts
Version:
Opinionated functional programming library with easy use in mind
18 lines (15 loc) • 445 B
text/typescript
interface Deferred<T> extends Promise<T> {
resolve: (value: T) => void;
reject: (err: Error) => void;
}
const defer = <T>(): Deferred<T> => {
let res: (value: unknown) => void = null as any;
let rej: (err: Error) => void = null as any;
const promise = new Promise((resolve, reject) => {
res = resolve;
rej = reject;
});
(promise as any).resolve = res;
(promise as any).reject = rej;
return promise as Deferred<T>;
};