Я хочу написать класс TypeScript, который получает параметр "префикс" в конструкторе, этот класс также нуждается в доступе к инъекции LogService.
Используя обычный JavaScript, вы должны сделать это следующим образом:
angular.module('myModule', []).factory('LogWithPrefixFactory', ['LogService', function(LogService) {
var LogWithPrefixFactory = function(prefix) {
this.prefix = prefix;
}
LogWithPrefixFactory.prototype.log = function(txt) {
// we have access to the injected LogService
LogService.log(this.prefix, txt);
}
return LogWithPrefixFactory;
}]);
Итак, когда вы вводите этот factory в контроллер, вы можете инициировать его много раз (не нужно вводить LogService):
angular.module('myModule').controller('Ctrl', function(LogWithPrefixFactory) {
var foo = new LogWithPrefixFactory("My PREFIX");
var foo = new LogWithPrefixFactory("My OTHER PREFIX");
}
Как бы вы определили этот factory в классе TypeScript? TypeScript классы не могут быть определены внутри функций... Этот класс должен иметь доступ к LogService, но он не может получить его в одном из инъекций.