/// /// /// module Rx { /** * Represents an object that is both an observable sequence as well as an observer. * Each notification is broadcasted to all subscribed observers. */ export interface ISubject extends IObservable, IObserver, IDisposable { hasObservers(): boolean; } export interface Subject extends Observable, Observer, IDisposable { hasObservers(): boolean; /** Is this value disposed. */ isDisposed: boolean; } interface SubjectStatic { /** * Creates a subject. */ new (): Subject; /** * Creates a subject from the specified observer and observable. * @param {Observer} observer The observer used to send messages to the subject. * @param {Observable} observable The observable used to subscribe to messages sent from the subject. * @returns {Subject} Subject implemented using the given observer and observable. */ create(observer?: IObserver, observable?: IObservable): Subject; } /** * Represents an object that is both an observable sequence as well as an observer. * Each notification is broadcasted to all subscribed observers. */ export var Subject: SubjectStatic; } (function() { var is: Rx.ISubject = new Rx.Subject(); var s : Rx.Subject = new Rx.Subject(); is.hasObservers(); s.hasObservers(); s.isDisposed; var iob : Rx.IObserver = s; var io : Rx.IObservable = s; var ob : Rx.Observer = s; var o : Rx.Observable = s; var d : Rx.IDisposable = s; var ns : Rx.ISubject = Rx.Subject.create(iob, io); var ns : Rx.ISubject = Rx.Subject.create(ob, o); });