Я работаю с унаследованным приложением AngularJS (вот почему здесь присутствуют функции "var" и конструктор)
Чтобы использовать подсказки Intellisense в коде VS, я хочу назначить типы для внедренных сервисов .
Сейчас я могу определить совершенно новый интерфейс службы s с помощью файла .d.ts, а затем назначить его аргументу другой службы, используя @ param
, например, определить IDayService в другом месте с помощью .d. ts файл и используйте его следующим образом:
some-service. js
/**
* @param {IDayService} dayService
*/
var service = function(dayService) {
// here I can use type benefits, e.g. see properties of the dayService
this.get = dayService.getDayOfWeekName(1);
}
angular.module('module').service('someService', service);
Работает нормально, однако, для этого подхода требуется дополнительный интерфейс и синхронизация c с фактической реализацией.
Это нормально, когда сервисы маленькие, но они НЕ.
Между тем, внутри функции конструктора DayService я могу использовать подсказки о доступных методах и свойствах DayService. без каких-либо дополнительных JSDo c или интерфейсов.
day-service. js
var service = (function() {
var DayService = function() {
this.property = 'string';
}
DayService.prototype.getDayOfWeekName = function(num) {
/**
* here I can use Intellisense for this. without any JSDoc definition
*/
return `Day ${num}`;
}
/**
* Or here I can create an instance of the DayService with "new" and see props
* e.g. var x = new DayService();
*/
return DayService;
})();
angular.module('module').service('dayService', service);
Есть ли способ повторно использовать информацию из кода DayService без дополнительных Определения интерфейса? например, присвоить какое-то имя этому классу и каким-то образом импортировать его внутри some-service. js?