【发布时间】:2016-04-22 01:16:34
【问题描述】:
我在 JavaScript 中有一个 Angular 工厂服务,我这样定义:
app.service('MyServiceFactory', ['$http', '$timeout', '$interval',
function($http, $timeout, $interval) {
function MyService() {
// I can use all injected values here without additional efforts
}
this.Create = function() {
return new MyService();
}
}]);
现在我想把它转换成 TypeScript:
module Services {
export class MyServiceFactory {
static $inject: string[] = ['$timeout', '$interval', '$http'];
constructor(
private timeout: angular.ITimeoutService,
private interval: angular.IIntervalService,
private http: angular.IHttpService) {
}
public create(): MyService { return new MyService(); };
}
export class MyService() {
// I have a problem here. I need to redefine and
// initialize all variables, injected into my factory class
}
angular.module('MyModule').service('MyServiceFactory', MyServiceFactory);
}
你明白我的意思吗? TypeScript 不允许嵌套类,这可以解决问题。此外,TypeScript 解决方案看起来很不酷。有没有更优雅的解决方案?
【问题讨论】:
标签: javascript angularjs typescript closures