I'm trying to subclass the RxJS Observable class as described here by subclassing Observable and overriding the lift method.
This works for any operators I add to the prototype, but whenever I try to instantiate a new Observable of my subclass (e.g. using MyObservable.from([1, 2, 3]), I get an Observable of the parent class.
How do I subclass Observable correctly, so that using Observable.return / Observable.from / works as expected? jsbin
class MyObservable extends Rx.Observable {
lift(operator) {
const observable = new MyObservable();
observable.source = this;
observable.operator = operator;
return observable;
}
customOperator() {
return this.map(arguments)
}
}
// instantiating an observable with **MyObservable**.from
var observable = MyObservable.from([1, 2, 3]);
console.log('instance of Rx.Observable: ' + observable instanceof Rx.Observable);
// this works as map is defined on RxObservable
observable
.map(value => console.log('standard ' + value))
.subscribe();
// this doesn't work. customOperator is only defined on MyObservable
// and MyObservable.from([1, 2, 3]) returns an Rx.Observable instance
observable
.customOperator(value => console.log('custom ' + value))
.subscribe();