RxJS5 TypeScript类型定义报错:执行tsc时出现TS2304错误
解决RxJS 5 + TypeScript编译时找不到DOM类型的错误
嘿,我之前也碰到过一模一样的问题!当执行tsc编译时,RxJS 5的类型定义文件找不到EventTarget、NodeList这些DOM相关的类型,本质原因是TypeScript默认没有包含DOM环境的类型声明,而RxJS的fromEvent和Ajax相关的Observable依赖这些DOM类型。
下面是我亲测有效的解决方法:
方法1:修改tsconfig.json添加DOM标准库
这是最直接的解决方案,在你的tsconfig.json的compilerOptions里配置lib数组,加入"dom":
{ "compilerOptions": { "target": "es5", // 或者你项目使用的其他目标版本 "lib": ["es2015", "dom"] // 将"dom"添加到标准库列表中 } }
解释一下:TypeScript的lib选项用来指定编译时要包含的标准库声明,添加"dom"后,TS就会加载浏览器DOM环境的所有类型定义,自然就能找到EventTarget这类DOM相关类型了。
方法2:确保RxJS与TypeScript版本兼容
如果上面的方法没用,可能是RxJS 5的类型定义和你当前的TypeScript版本不匹配。RxJS 5通常兼容TypeScript 2.x系列,如果你用的是TS 3.x+版本,可能会出现类型定义冲突。这种情况下可以:
- 降级TypeScript到2.x稳定版本(比如执行
npm install typescript@2.9.2 --save-dev) - 或者升级RxJS到6.x版本(不过这需要修改代码适配RxJS 6的API变化,比如引入
rxjs/operators替代原来的链式操作)
验证解决效果
修改完配置或版本后,重新执行编译命令:
$ tsc
如果没有报错,就说明问题解决啦!
内容的提问来源于stack exchange,提问作者Alexander Mills
相关产品推荐
相关产品推荐

