我们使用的是 TypeScript 2.2。升级到 2.4 后,我们现在可以在编译时得到:
错误 TS2345:“typeof TopMenuController”类型的参数不可分配给“Injectable”类型的参数。
类型“typeof TopMenuController”不可分配给类型“(string | (new (...args: any[]) => IController) | ((...args: any[]) => void | IController))[ ]'。
类型“typeof TopMenuController”中缺少属性“push”。
ts\controllers\TopMenuController.ts(2,18):错误 TS2559:类型“TopMenuController”与类型“IController”没有共同的属性。
我不明白第一个错误,谷歌搜索它很困难。我只是请求有关第一个错误的帮助。 (由于我尝试解决第一个错误,我收到了第二个错误)。这是控制器:
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
位消除了第二个错误,但第一个错误仍然存在)
Edit:我发现this bug https://github.com/Microsoft/TypeScript/issues/16536