TypeScript 2.4およびRxJS 5.xでこの「サブジェクトが観察可能に拡張される」エラーを回避するにはどうすればよいですか?

ダニエル・ローゼンワッサー:

コンパイルすると、RxJS宣言ファイルで次のコンパイラエラーが発生します。

node_modules/rxjs/Subject.d.ts(16,22): error TS2415: Class 'Subject<T>' incorrectly extends base class 'Observable<T>'.
  Types of property 'lift' are incompatible.
    Type '<R>(operator: Operator<T, R>) => Observable<T>' is not assignable to type '<R>(operator: Operator<T, R>) => Observable<R>'.
      Type 'Observable<T>' is not assignable to type 'Observable<R>'.
         Type 'T' is not assignable to type 'R'.

ここで何が起こっているのですか?TypeScript 2.3以前にダウングレードせずにこれを回避するにはどうすればよいですか?

ダニエル・ローゼンワッサー:

解決

RxJS 5.4.2はTypeScript 2.4.1で完全に動作するはずです。可能であれば、単に5.4.2以降にアップグレードしてください。

npm install --save rxjs@^5.4.2

そうでない場合は、以下の解決策が機能するはずです。

なぜそれが起こっているのか

TypeScript 2.4には厳密性の変更がありSubject<T>、正しいに引き上げられていませんObservable署名は本当にあったはずです

<R>(operator: Operator<T, R>) => Observable<R>

これはRxJS 6で修正される予定です。

代替ソリューション

RxJSの新しいバージョンではこれが修正されていますが、一時的な回避策としてnoStrictGenericChecksコンパイラオプションを使用できます。

tsconfig.json、それを置く"compilerOptions"と、それを設定しますtrue

{
    "compilerOptions": {
        "noStrictGenericChecks": true
    }
}

コマンドラインでは--noStrictGenericChecksです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ