Могу ли я повторно использовать автоматически определенные типы с JSDoc - PullRequest
0 голосов
/ 15 января 2020

Я работаю с унаследованным приложением 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?

...