Я использую библиотеку, которая не написана в TypeScript, и поэтому я должен использовать файл определения.typescript - расширение определения класса без конструктора
Внутри этого файла определения есть класс без конструктора (поскольку исходный JS-код не имеет конструктора). Если я пытаюсь расширить класс в моем коде, я получаю ошибку:
Error:(36, 2) TS2377: Constructors for derived classes must contain a 'super' call.
Если добавить super()
конструктору, JavaScript сетует:
Uncaught TypeError: _super.call is not a function
Как я могу изменить файл определения так, чтобы этот код работает, и первая ошибка из TS устранена? (Для машинописи 1.6)
Вот простой пример файла определения (на основе backbone-global.d.ts:
declare module Backbone {
class Events {
on(eventName: string, callback?: Function, context?: any): any;
off(eventName?: string, callback?: Function, context?: any): any;
}
class ModelBase extends Events {
...
}
class Router extends Events {
...
}
}
В моем коде у меня есть что-то вроде:
/// <reference path="libs/typescript/backbone/backbone.d.ts" />
class RosApiManager extends Backbone.Events {
constructor() {
super();
}
}
Итак, как же тогда это было объявлено? 'ModelBase' и' Router' по-прежнему необходимо каким-то образом наследовать методы из 'Events' ... – SailAvid
Попадать в ту же проблему ... интересно, есть ли что-то в TS, позволяющее обходить эту команду' _super.call (this); ' когда мы действительно не хотим его называть ... или мы должны исправить файл Backbone.d.ts для этого :( –