1

私が書いている TypeScript アプリケーションで RxJs 定義を使用しようとしています。定義をインポートしましたが、現在、件名を新しくしようとしています。

this.stream = new Rx.Subject();

ただし、これを試してみると、次のエラーが発生します。

エラー 6 プロパティ 'サブジェクト' は型 '{ の値に存在しません。addProperties(obj: オブジェクト、...ソース: オブジェクト[]): void; addRef(xs: Rx.IObservable, r: { getDisposable(): Rx._IDisposable; }): Rx.IObservable; }; オブザーバー: { create(onNext: (value: any) => void, onError?: (exception: any) => void, onCompleted?: () => void): Rx.IObserver; fromNotifier (ハンドラ: (通知: Rx.INotification) => void): Rx.IObserver; }; }

この型定義を見ると、サブジェクト クラスがインターフェイスとして定義されていることがわかります。

export interface Subject {
    (): ISubject;

    create(observer: IObserver, observable: IObservable): ISubject;
}

方法が見つからないので、この Subject クラスのインスタンスを作成する方法を教えてください。現在TS 9.1.1を使用しています。私は(): ISubjectがそれを行うかもしれないと思ったが、何の影響もないようだ。

代わりにクラスを定義することをお勧めしますが、基本インターフェイスからすべてのメソッドを実装する必要があるため、IObservable から継承するため、これは巨大になります。

4

1 に答える 1

1

間違いなく型付けされたrx.jsタイピングの最新バージョンを使用すると、これが機能します。あなたの定義を更新することが道です。

TypeScript Playground でも試すことができます。テストするには、Definitely Typed のコードを貼り付ける必要があります (Playground への長いリンクはここでは許可されていないようです)。

var x = new Rx.Subject();
于 2014-01-08T17:07:07.803 に答える