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没有这个模块的定义? 如果是这样,我将如何去实现定义,有我困惑的位是prototype
和new()
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检查的好处。