ここで説明されているように、Observable をサブクラス化し、リフト メソッドをオーバーライドすることで、RxJS Observable クラスをサブクラス化しようとしています。
これは、プロトタイプに追加するすべての演算子で機能しますが、サブクラスの新しい Observable をインスタンス化しようとすると (たとえば、MyObservable.from([1, 2, 3]) を使用して)、親クラスの Observable が取得されます。
Observable.return / Observable.from / を使用して期待どおりに動作するように、Observable を正しくサブクラス化するにはどうすればよいですか? 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();