import 'typings-global' export interface IResolve { (value?: T | Promise): void } export interface IReject { (reason?: any): void } export class Deferred { promise: Promise resolve: IResolve reject: IReject constructor() { this.promise = new Promise((resolve, reject) => { this.resolve = resolve this.reject = reject }) } } export let defer = () => { return new Deferred() } export let all = () => { }