【发布时间】:2017-03-08 14:21:21
【问题描述】:
当前在 Angular 4.0.0-rc.2 组件中声明了以下自定义 RxJS 运算符(实际上只是一个 .filter 等效的演示)。
declare module 'rxjs/Observable' {
interface Observable<T> {
restrictToCommand<U>(f: (x: T) => U): Observable<U>;
}
}
Observable.prototype.restrictToCommand = function (cmd) {
return new Observable((observer) => {
const obs = {
next: (x) => {
if (x.command === cmd) {
observer.next(x);
}
},
error: (err) => observer.error(err),
complete: () => observer.complete()
};
return this.subscribe(obs);
});
};
这很好用。但是,我想将此声明提取到负责外部通信的库中。这个库的主要导入是一个单例服务。
如何从该库中正确导出原型扩展和模块声明?
【问题讨论】:
-
不清楚操作符是已经被库使用了还是只是为了方便而存在。
-
库本身对操作员没有内部使用,它是为导入库的用户提供的便利功能。
-
然后按照 RxJS 使用
rxjs/add/operator/...的方式,在包根中提供restrictToCommandOperator.js。 -
谢谢,这看起来是一个有效的路径。如果您要使用代码示例来制定答案(为了完整起见),我可能会接受它;)
标签: angular typescript rxjs