0
我使用的是rxjs (5.0+),我想寫一個我自己的Operator
,其名稱爲append
,用於Observable
。現在我已經成功地創建了運算符並且它可以工作,但是如何告訴Typescript原始Observable支持我的新運算符?因爲它抱怨編譯錯誤象下面這樣:如何擴展rxjs來添加我自己的操作員?
Property 'append' does not exist on type 'Observable'.
以下是我的源代碼:
append.ts
Observable.prototype.append = function (value) {
return new Observable((observer) => {
const mapObserver = {
next: (x) => observer.next(x == null ? value : x + value),
error: (err) => observer.error(err),
complete:() => observer.complete()
};
return this.subscribe(mapObserver);
});
};
test.ts
import './append';
export class Test {
init() {
Observable.from([1, 2])
.append('a') // <--- Compile error! but in fact, it works.
.subscribe(function (x) {
console.log(x); // Works, output 1a and 2a
}
);
}
}
我知道我需要告訴Typescript關於我的新Operator
,但我不知道該怎麼做?我檢查了rxjs的源代碼,發現它包含以下代碼src/add/operator/map.ts
。我試圖在我的append.ts
中添加一些類似的代碼,但我不知道包含Observable
接口的模塊名稱是什麼。 (順便說一句,我使用的打字稿2)
declare module '../../Observable' {
interface Observable<T> {
map: typeof map;
}
}