input节点模块的TypeScript编译器错误?

我试图使用这个,但编译器正在产生以下内容:

Client.ts(2,5): error TS2134: Subsequent variable declarations must have the same type. Variable 'XMLHttpRequest' must be of type '{ prototype: XMLHttpRequest; LOADING: number; DONE: number; UNSENT: number; OPENED: number; HEADERS_RECEIVED: number; new(): XMLHttpRequest; }', but here has type 'any'. 

作为参考,产生错误的行是:

 var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; 

我是否认为这是因为node.d.ts没有这个模块的定义? 如果是这样,我将如何去实现定义,有我困惑的位是prototypenew()typesXMLHttpRequest 。 这是一个recursion的引用,或将说一个空的类声明足够?

这是因为XMLHttpRequest是在lib.d.ts中定义的:

 declare var XMLHttpRequest: { prototype: XMLHttpRequest; new (): XMLHttpRequest; LOADING: number; DONE: number; UNSENT: number; OPENED: number; HEADERS_RECEIVED: number; } 

这与您实际parsing为any XMLHttpRequest的定义冲突

 var XMLHttpRequest 

如果这个lib与浏览器XMLHttpRequest兼容,你可以做(​​拆分声明和赋值)。 这样编译器不会试图重新定义它:

  var XMLHttpRequest; XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; 

如果没有,我build议你使用一个不同的名字,或编译–noLib编译器标志。

是的,node.d.ts不会有这个声明。

我有2个可能的选项为您手动创buildnode-XMLHttpRequest.d.ts 。 (我找不到已经定义的)或者使用var XMLHttpRequest = <any>(require('xmlhttprequest').XMLHttpRequest);

如果您在代码中使用了这个库,我build议您定义node-XMLHttpRequest.d.ts文件,以获取打字稿types检查的好处。