所以我想强迫自己总是在rxjs的订阅上放错误函数。所以我希望添加一个界面,例如:
Observable.prototype.sub = Observable.prototype.subscribe;
所以我正在制作订阅的副本,并继续但不知何故使用TypeScript强制sub
让一个接口总是需要提供符合的函数
var subscription = source.subscribe(
x => console.log('onNext: %s', x),
e => console.log('onError: %s', e),
() => console.log('onCompleted')
);
这样,当我使用新创建的sub
运算符
问候
肖恩
答案 0 :(得分:1)
是的。扩展Observable
的TypeScript界面以包含sub
方法非常容易。
将此内容添加到sub.ts
文件中:
import { Observable } from "rxjs/Observable";
import { PartialObserver } from "rxjs/Observer";
import { AnonymousSubscription } from "rxjs/Subscription";
Observable.prototype.sub = Observable.prototype.subscribe;
declare module "rxjs/Observable" {
interface Observable<T> {
sub: (
observerOrNext: PartialObserver<T> | ((value: T) => void),
error: (error: any) => void,
complete?: () => void
) => AnonymousSubscription;
}
}
并按照这样消费:
import { Observable } from "rxjs/Observable";
import "rxjs/add/observable/of";
import "./sub";
Observable
.of(1)
.sub(value => console.log(value));
上面的代码段不包含错误处理程序,因此它会影响&#34;提供的参数与调用目标的任何签名都不匹配&#34; 错误。
仅供参考,我已根据此signature for subscribe
的sub
签名。