【发布时间】:2016-09-08 09:13:33
【问题描述】:
我正在尝试尽可能多地从我的应用程序中删除对“任何”的引用。是否有可能摆脱这个 - 我可以为我的控制器工厂编写什么接口?
return (controller) as any;
module TsApp.Home {
"use strict";
export interface IBlogEntries {
blogEntries: Common.BlogEntry[];
}
interface IBaHomeController {
$scope: IBlogEntries;
baBlogEntriesService: Common.IBlogEntries;
$http: ng.IHttpService;
}
class BaHomeController {
$scope: IBlogEntries;
baBlogEntriesService: Common.IBlogEntries;
$http: ng.IHttpService;
public static factory(): IBaHomeController[] {
const controller = (log: ng.ILogService, $scope: IBlogEntries, blogEntriesService: Common.IBlogEntries, http: ng.IHttpService
): IBaHomeController => {
return new BaHomeController(log, $scope, blogEntriesService, http);
};
controller.$inject = ["$log", "$scope", "BaBlogEntriesService", "$http"];
return (controller) as any; //#2
}
constructor(private $log: ng.ILogService, $scope: IBlogEntries, private bBaBlogEntriesService: Common.IBlogEntries,
private http: ng.IHttpService) {
const defer = bBaBlogEntriesService.getAsync();
defer.then(response => {
$scope.blogEntries = response.data;
$log.debug("blog entries");
});
}
}
angular
.module("Main")
.controller("BaHomeController", BaHomeController.factory()); //#1
}
我认为“返回(控制器)为 IBaHomeController[];”会工作,但我得到这个错误:
类型 '(log: ILogService, $scope: IBlogEntries, blogEntriesService: IBlogEntries, http: IHttpService) =>...' 和类型 'IBaHomeController[]' 都不能分配给另一个。 类型 '(log: ILogService, $scope: IBlogEntries, blogEntriesService: IBlogEntries, http: IHttpService) =>...' 中缺少属性 'push'。
由于这是方法定义的返回类型,我认为它会起作用。这让我相信我需要更改方法的返回类型?
编辑:如果有更简单的方法来注入依赖项,那也适用于我。
【问题讨论】:
标签: angularjs typescript typescript1.8