Typescript 无法构造';XMLHttpRequest';:请使用';新';运算符,此DOM对象构造函数不能作为函数调用
在这里,我创建了一个类承诺,扩展了类Typescript 无法构造';XMLHttpRequest';:请使用';新';运算符,此DOM对象构造函数不能作为函数调用,typescript,constructor,xmlhttprequest,Typescript,Constructor,Xmlhttprequest,在这里,我创建了一个类承诺,扩展了类XMLHttpRequest。 然后我尝试使用下面给定的方法访问这个类 export default class Promise extends XMLHttpRequest { constructor(url: string, type: string) { super(); config.url = url; config.requestType = type; } } 在进入超级调用时,出
XMLHttpRequest
。
然后我尝试使用下面给定的方法访问这个类
export default class Promise extends XMLHttpRequest {
constructor(url: string, type: string) {
super();
config.url = url;
config.requestType = type;
}
}
在进入超级调用时,出现以下错误
构造“XMLHttpRequest”失败:请使用“new”运算符,此DOM对象构造函数不能作为函数调用
这可能是因为
XMLHttpRequest
是一个托管对象,它们在扩展时有时会出现错误行为
幸运的是,如果您使用es6类对其进行扩展,情况会有所改变。编译此文件时:
let prom = new Promise('api/200', 'get');
到es5,您可以获得:
class RequestPromise extends XMLHttpRequest {
constructor() {
super();
}
}
但在使用目标es6编译时,它将保持类的原样:
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var RequestPromise = (function (_super) {
__extends(RequestPromise, _super);
function RequestPromise() {
_super.call(this);
}
return RequestPromise;
}(XMLHttpRequest));
如果您尝试这样做,它应该可以正常工作使发送HTTP请求变得非常容易。您只需创建对象的实例,打开URL,然后发送请求
class RequestPromise extends XMLHttpRequest {
constructor() {
super();
}
}
你是如何编译的?哪个目标?目前正在将其编译为ES5可能的ya副本,我也发现它在es6格式中运行良好,但对我来说,我也将IE作为我的应用程序的目标,所以我想es6不会有任何好处
var oReq = new XMLHttpRequest();