declare module Rx { type ObservableOrPromise = IObservable | Observable | Promise; type ArrayLike = Array | { length: number; [index: number]: T; }; type ArrayOrIterable = ArrayLike; /** * Promise A+ */ interface Promise { then(onFulfilled: (value: T) => R | Promise, onRejected: (error: any) => Promise): Promise; then(onFulfilled: (value: T) => R | Promise, onRejected?: (error: any) => R): Promise; } /** * Promise A+ */ interface IPromise extends Promise { } /** * Represents a push-style collection. */ interface IObservable { } /** * Represents a push-style collection. */ interface Observable extends IObservable { } }