RxJS5 TypeScript 打字失败 [英] RxJS5 TypeScript typings fail
问题描述
我在我的项目上运行 tsc
,我得到这些与 RxJS5 库相关的错误:
I run tsc
on my project, and I get these errors relating to the RxJS5 lib:
$ tsc
node_modules/rxjs/observable/FromEventObservable.d.ts(11,39): error TS2304: Cannot find name 'EventTarget'.
node_modules/rxjs/observable/FromEventObservable.d.ts(11,103): error TS2304: Cannot find name 'NodeList'.
node_modules/rxjs/observable/FromEventObservable.d.ts(11,114): error TS2304: Cannot find name 'HTMLCollection'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(16,23): error TS2304: Cannot find name 'XMLHttpRequest'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(77,59): error TS2304: Cannot find name 'Event'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(82,13): error TS2304: Cannot find name 'Event'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(97,20): error TS2304: Cannot find name 'Event'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(98,10): error TS2304: Cannot find name 'XMLHttpRequest'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(108,32): error TS2304: Cannot find name 'Event'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(108,44): error TS2304: Cannot find name 'XMLHttpRequest'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(119,10): error TS2304: Cannot find name 'XMLHttpRequest'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(128,39): error TS2304: Cannot find name 'XMLHttpRequest'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(136,22): error TS2304: Cannot find name 'XMLHttpRequest'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(10,29): error TS2304: Cannot find name 'MessageEvent'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(11,33): error TS2304: Cannot find name 'Event'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(12,34): error TS2304: Cannot find name 'CloseEvent'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(15,63): error TS2304: Cannot find name 'WebSocket'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(27,13): error TS2304: Cannot find name 'WebSocket'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(28,32): error TS2304: Cannot find name 'Event'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(29,33): error TS2304: Cannot find name 'CloseEvent'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(32,63): error TS2304: Cannot find name 'WebSocket'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(36,23): error TS2304: Cannot find name 'MessageEvent'.
有谁知道为什么会这样?这是我的 package.json 文件:
does anyone know why this is happening? this is my package.json file:
{
"name": "oplog.rx",
"version": "0.0.101",
"description": "",
"main": "index.js",
"scripts": {
"test": "suman test"
},
"repository": {
"type": "git",
"url": "git+https://github.com/ORESoftware/oplog.rx.git"
},
"keywords": [
"oplog",
"mongodb",
"rx",
"rxjs"
],
"author": "Olegzandr V.D.",
"license": "MIT",
"bugs": {
"url": "https://github.com/ORESoftware/oplog.rx/issues"
},
"homepage": "https://github.com/ORESoftware/oplog.rx#readme",
"dependencies": {
"bson": "^2.0.4",
"json-stdio": "0.0.1016",
"mongodb": "^3.0.4",
"rxjs": "^5.5.7"
},
"devDependencies": {
"@types/mongodb": "^3.0.8"
}
}
推荐答案
您需要将 "dom"
添加到 tsconfig.json 中的
文件的 lib
设置compilerOptions
:
You need to add "dom"
to the lib
setting in your tsconfig.json
file's compilerOptions
:
"lib": ["dom", "es2015"]
或者,您可以使用 skipLibCheck
compilerOption
来避免检查 node_modules
中的 .d.ts
文件:
Alternatively, you can use the skipLibCheck
compilerOption
to avoid checking .d.ts
files within node_modules
:
"skipLibCheck": true
有关解释,请参阅此问题.
基本上,fromEvent
可观察工厂同时支持 Node 和 DOM 事件源,TypeScript 需要了解 DOM 类型.
Basically, the fromEvent
observable factory supports both Node and DOM event sources and TypeScript needs to know about the DOM types.
这个 PR 应该可以解决问题.
这篇关于RxJS5 TypeScript 打字失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!