我正在使用AngularJS和TypeScript.我想使用Typescript类实现AngularJS服务,如下所示:
class HelloService {
public getWelcomeMessage():String {
return "Hello";
}
}
angular.module('app.services.helloService', []).factory('helloService', () => {
return new HelloService();
});
这将编译为以下javascript代码:
var HelloService = (function () {
function HelloService() {
}
HelloService.prototype.getWelcomeMessage = function () {
return "Hello";
};
return HelloService;
})();
angular.module('app.services.helloService', []).factory('helloService', function () {
return new HelloService();
});
这会用变量HelloService污染全局名称空间,这显然是我不想要的.(使用的是HelloService的Chrome控制台.)我如何解决/避免这个问题?
我try 了显而易见的:
angular.module('app.services.helloService', []).factory('helloService', function () {
class HelloService { ...}
return new HelloService();
});
但这给了我一个编译错误("意外标记;'statement'expected.").
我能想到的一个可能的解决方案是以某种方式使用TypeScript的导入和导出,这反过来又会使用RequireJS.这可能会将HelloService封装在一个define函数中,从而避免HelloService对全局范围的污染.然而,我现在不想在我的AngularJS应用程序中使用RequireJS,因为我认为AngularJS对我来说已经足够好了,而且它增加了复杂性.
所以,我的问题是,如何使用不会污染全局范围的TypeScript类定义AngularJS服务?