Мы использовали TypeScript 2.2. После обновления до 2.4 мы теперь получаем это на компиляции:
error TS2345: Аргумент типа 'typeof TopMenuController' не присваивается параметру типа 'Injectable <IControllerConstructor> '. Тип 'typeof TopMenuController' не присваивается типу '(string | (new (... args: any []) = > IController) | ((... args: any []) = > void | IController) ) [] ". Свойство" push "отсутствует в типе" typeof TopMenuController".
ts\controllers\TopMenuController.ts(2,18): ошибка TS2559: Тип 'TopMenuController' не имеет общих свойств с типом 'IController'.
Я не понимаю первую ошибку, и Googling это было сложно. Я только прошу помощи с первой ошибкой. (Я получаю вторую ошибку из-за моих попыток разрешить первое). Здесь контроллер:
export class TopMenuController implements angular.IController {
static $inject = ["$templateCache", "Restangular"];
constructor(
private readonly $templateCache: angular.ITemplateCacheService,
private readonly restangular: Restangular.IElement) {
}
}
И вот как он зарегистрирован.
angular.module("ngApp")
.config(Configuration.TemplateCacheConfigurator)
.controller("topMenuController", Controllers.TopMenuController)
Как изменить определение контроллера или его регистрацию, чтобы наш код снова скомпилировался?
(Удаление бита implements angular.IController
удаляет вторую ошибку, но первая остается)
Изменить: Я нашел эту ошибку