コンパイルすると、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]
コメントを追加