升级Angular至5.2.8后WebStorm 2017.3.5无法识别rxjs@5.5.6运算符
解决WebStorm 2017.3.5无法识别rxjs@5.5.6运算符的问题
我之前也碰到过类似的情况——编译正常但IDE报未识别的方法错误,本质上是老版本WebStorm对rxjs 5.5.x的类型解析支持不到位,给你几个可行的解决思路:
优先升级WebStorm版本
WebStorm 2017.3.5确实比较老旧,rxjs 5.5.x推出的一些类型定义优化没被这个版本覆盖。JetBrains在2018.1及以后的版本里专门修复了对rxjs 5.5+运算符的识别问题,升级IDE应该能直接搞定这个bug,而且新版本还能带来其他性能和功能提升。手动修复IDE的类型索引问题
如果暂时没法升级IDE,可以试试这几步:- 先清理依赖重新安装:删除项目根目录的
node_modules文件夹和package-lock.json(用yarn的话删yarn.lock),然后执行npm install,确保rxjs及其类型文件完整安装。 - 检查TypeScript配置:打开
File > Settings > Languages & Frameworks > TypeScript,确认TypeScript version选择的是项目本地的2.6.2(不要用IDE自带的版本),同时勾选Use tsconfig.json,让IDE遵循项目的TypeScript配置。 - 强制重建索引:点击
File > Invalidate Caches...,选择Invalidate and Restart,让WebStorm彻底重新加载所有文件和类型定义,很多时候这类未识别错误都是索引缓存导致的。
- 先清理依赖重新安装:删除项目根目录的
切换到rxjs的pipeable运算符(推荐长期方案)
rxjs 5.5.x引入了pipeable运算符,这是官方推荐的写法,不仅能避免全局导入的副作用,对老版本IDE的类型支持也更友好。另外要注意,do运算符在5.5+里已经改名为tap了哦,你可以把代码改成这样:import { from } from 'rxjs'; import { tap } from 'rxjs/operators'; from([1,2]).pipe( tap((i: number) => { console.log(i); }) );这种写法不仅能让WebStorm正确识别类型,还能为以后升级到rxjs 6+做好铺垫,一举两得。
内容的提问来源于stack exchange,提问作者tschuege
相关产品推荐
相关产品推荐

