我有一个使用AngularJS和TypeScript的应用程序
我想知道是否应该使用AngularJS工厂而不是TypeScript Static Class
解决方法
ES6 / TypeScript类没有任何变化.它们只是
JavaScript构造函数的语法糖.
通过消除过程可以找出工厂服务的良好用例.
由于服务服务更适合OOP风格的单位:
class FooClass { static $inject = [...]; constructor(...) {} } app.service('foo',FooClass);
对于不是由类构建且不涉及DI的单例单元,优先考虑价值服务:
app.value('bar','bar'); app.value('Baz',BazClass);
工厂服务可用于其他案例.即当一个服务需要DI并且返回的值不能很容易地从一个类构造 – 一个函数,一个原语,一个从函数调用返回的对象:
app.factory('qux',($q) => $q.all([...]));