Я пытаюсь расширить класс Request
в Typescript следующим образом:
export class ApiRequest extends Request {
static userAgentHeader: string = '';
static xUserAgentHeader: string = '';
public body: string;
constructor(url: string, initialData?: any) {
super(url, initialData);
if (this.method !== 'GET') {
this.body = initialData._bodyText;
}
this.headers.set('User-Agent', ApiRequest.userAgentHeader);
this.headers.set('X-User-Agent', ApiRequest.xUserAgentHeader);
}
static setAgentHeader(userAgentHeader: string) {
ApiRequest.userAgentHeader = userAgentHeader;
}
static setXUserAgentHeader(xUserAgentHeader: string) {
ApiRequest.xUserAgentHeader = xUserAgentHeader;
}
}
Однако при переносе в ES5 я получаю следующий фрагмент кода:
import * as tslib_1 from "tslib";
var ApiRequest = /** @class */ (function (_super) {
tslib_1.__extends(ApiRequest, _super);
function ApiRequest(url, initialData) {
var _this = _super.call(this, url, initialData) || this;
if (_this.method !== 'GET') {
_this.body = initialData._bodyText;
}
_this.headers.set('User-Agent', ApiRequest.userAgentHeader);
_this.headers.set('X-User-Agent', ApiRequest.xUserAgentHeader);
return _this;
}
ApiRequest.setAgentHeader = function (userAgentHeader) {
ApiRequest.userAgentHeader = userAgentHeader;
};
ApiRequest.setXUserAgentHeader = function (xUserAgentHeader) {
ApiRequest.xUserAgentHeader = xUserAgentHeader;
};
ApiRequest.userAgentHeader = '';
ApiRequest.xUserAgentHeader = '';
return ApiRequest;
}(Request));
export { ApiRequest };
//# sourceMappingURL=ApiRequest.js.map
Проблема возникает при попытке создать ApiRequest
объект путем вызова new ApiRequest(url)
, Uncaught TypeError
выдается со следующим сообщением:
Uncaught TypeError: Не удалось создать 'Запрос': Пожалуйста, используйте 'Оператор new ', этот конструктор объекта DOM не может быть вызван как функция.at eval (eval at ApiRequest (ApiRequest.js: 5),: 1: 1)
Похоже, что Request
нельзя вызывать без ключевого слова new
, но переданный код выполняет толькочто в строке 5 (_super.call()
).
Есть ли способ как-нибудь заставить это работать?