Ich benutze rxjs (5.0+) und ich möchte eine eigene Operator
mit dem Namen append
für Observable
schreiben. Jetzt habe ich den Operator erfolgreich erstellt und es funktioniert, aber wie kann ich Typoskript sagen, dass das ursprüngliche Observable meinen neuen Operator unterstützt? weil es einen Compiler-Fehler wie unten beschweren:Wie erweitert man Rxjs um meinen eigenen Operator hinzuzufügen?
Property 'append' does not exist on type 'Observable'.
Es folgt mein Quellcode:
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
}
);
}
}
Ich weiß, ich muss Typoskript über meine neue Operator
erzählen, aber ich weiß nicht, wie es geht? Ich habe den Quellcode von rxjs überprüft und festgestellt, dass er folgenden Code in src/add/operator/map.ts
enthält. Ich habe versucht, etwas ähnlichen Code in meine append.ts
hinzuzufügen, aber ich weiß nicht, was der Modulname ist, der die Observable
Schnittstelle enthält. (BTW, ich bin mit Typoskript 2.)
declare module '../../Observable' {
interface Observable<T> {
map: typeof map;
}
}