如何处理依赖不同TypeScript版本的第三方包编译报错问题?
解决TypeScript版本不兼容导致node_modules库编译报错的问题
我之前也碰到过一模一样的情况——项目里依赖的包TS版本不统一,单纯用exclude根本压不住那些类型检查报错,太头疼了。给你几个亲测有效的解决方案:
启用
skipLibCheck快速绕过检查:这是最直接的办法。在你的tsconfig.json里加上"skipLibCheck": true,这个配置会让TypeScript跳过对node_modules里库文件的类型校验,只检查你自己写的业务代码,瞬间就能避开旧版本库不符合新TS规范的问题。
示例配置如下:{ "compilerOptions": { // 保留你原有的其他配置 "skipLibCheck": true } }升级rxjs到兼容TS2.4的版本:从根源解决问题的话,你可以把
@reactivex/rxjs升级到支持TS2.4的版本。rxjs 5.5及以上的版本已经适配了更高版本的TypeScript,执行下面的命令就能升级:npm install @reactivex/rxjs@^5.5.0 --save如果项目允许,直接升级到rxjs 6+会更稳妥,它对TS的支持会更完善。
调整at-loader的检查范围:你用到了
at-loader,有可能是这个loader的配置没排除node_modules,导致即使tsconfig里写了exclude,loader还是会去检查依赖里的文件。可以在webpack配置里给at-loader加上排除规则:module.exports = { module: { rules: [ { test: /\.tsx?$/, loader: 'at-loader', exclude: /node_modules/, options: { configFile: 'tsconfig.json' } } ] } };
优先试试skipLibCheck,见效最快;如果项目允许升级依赖,那升级rxjs是长期的最优解,你可以根据自己的项目情况选。
内容的提问来源于stack exchange,提问作者Justin Moore
相关产品推荐
相关产品推荐

