'Observable <T>' ist keine von 'Observable <T>' abgeleitete Klasse

Wenn versucht wird, eine Klasse von einer Klasse in einem @ zu erweitenode_modules Der Typoskript-Compiler gibt einen Fehler aus:

Property 'source' is protected but type 'Observable<T>' is not a class derived from 'Observable<T>'.

Dies geschieht nur, wenn die Basisklasse von einem @ stamnode_module.

Die Basisklasse sieht wie folgt aus:

import {Observable} from "rxjs/Observable";
export abstract class TestBase<T> {

    request(options: any):Observable<T> {
        return Observable.throw(new Error('TestBase is abstract class. Extend it and implement own request method'));
    }
}

Subclassing es in einem Projekt:

import {Observable} from "rxjs/Observable";
import {TestBase} from "@org/core";

class SocketResponse {

}

class Socket {
    request(): Observable<SocketResponse> {
        return new Observable.of(new SocketResponse());
    }
}

export class Sub extends TestBase<SocketResponse> {
    request(options:any):Observable<SocketResponse> {
        return new Socket().request();
    }
}

Wenn die Basisklasse TestBase) wird aus dem @ verschobnode_module zum Projekt selbst und ändere den Import so, dass er wie @ aussieimport {TestBase} from "./base"; Der Fehler verschwindet.

Liegt dies daran, dass die Kompilierung die Typen für jedes Modul in unterschiedlichen Bereichen erstellt? Ich bin hier völlig verloren.

Aktualisieren

Dies scheint nur beim Verlinken des @ zu passiernode_modules mitnpm link. Scheint, als ob eine mögliche Problemumgehung im Moment darin besteht, einen Typ in der Basisklasse zurückzugeben, um eine Schnittstelle zurückzugeben.

Weitere Informationen finden Sie hier:

https: //github.com/Microsoft/TypeScript/issues/649

https: //github.com/ReactiveX/rxjs/issues/174

Antworten auf die Frage(16)

Ihre Antwort auf die Frage