Dan*_*ser 47 rxjs typescript rxjs5 typescript2.4
当我编译时,我在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'.
Run Code Online (Sandbox Code Playgroud)
这里发生了什么,如何在不降级到TypeScript 2.3或更早版本的情况下解决这个问题?
Dan*_*ser 120
RxJS 5.4.2现在应该与TypeScript 2.4.1完美配合.如果可能,只需升级到5.4.2+.
npm install --save rxjs@^5.4.2
Run Code Online (Sandbox Code Playgroud)
如果没有,下面的解决方案应该工作.
较新版本的RxJS将修复此问题,但作为临时解决方法,您可以使用Subject<T>编译器选项.
在Observable,把它放入noStrictGenericChecks并设置为tsconfig.json.
<R>(operator: Operator<T, R>) => Observable<R>
Run Code Online (Sandbox Code Playgroud)
它在命令行上"compilerOptions".
TypeScript 2.4具有严格的更改,并true没有提升到正确的位置--noStrictGenericChecks.签名真的应该是
{
"compilerOptions": {
"noStrictGenericChecks": true
}
}
Run Code Online (Sandbox Code Playgroud)
这将在RxJS 6中修复.
Kar*_*lai 14
今天,面对这个错误并通过以下三个步骤解决了这个问题.所以与希望分享同样的东西,这将有助于其他人.
步骤1:在package.json文件中将条目更改为"rxjs":"5.4.2",
步骤2:从项目中删除node_modules文件夹,该文件夹存在于根目录中
第3步:现在,右键单击package.json文件,然后单击还原,如下所示:

注意:它将再次创建带有新文件的node_module文件夹,现在构建解决方案,希望您不应该得到与上述问题相关的任何构建错误.
sha*_*kla 12
加
"noStrictGenericChecks": true
Run Code Online (Sandbox Code Playgroud)
在tsconfig.json文件中
我在package.json文件中进行了以下两个更改.
1)在依赖项部分中将rxjs版本更改为5.4.1.
"依赖":{
"rxjs":"5.4.1"}
2)在devDependencies部分将typescript版本更改为2.4.0.
"devDependencies":{"typescript":"2.4.0"}
在进行了两次更改之后我运行了' npm install '命令并且它运行了.
| 归档时间: |
|
| 查看次数: |
37573 次 |
| 最近记录: |