JSDO C Коллекция документов помощников в объекте - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть коллекция «утилитарных» помощников, инкапсулированных в объект, как показано ниже:

export const QuotationRequestUtils = {
  /**
   *
   * @param {Object} param0
   * @param {string} param0.currentView
   * @param {string} param0.insuranceType
   *
   * @returns {string}
   */
  getNextView({ currentView, insuranceType }) { return "str" },

  /**
   *
   * @param {Object} param0
   * @param {number} param0.this
   * @param {string} param0.that
   *
   * @returns {number}
   */
  getSomething({ this, that }) { return 2 }
}

Это хорошо работает в следующем:

  • Вызов QuotationRequestUtils.getNextView делает утверждения о аргументы и возвращаемые типы
  • В среде IDE предлагаются предложения о том, какие вспомогательные функции доступны при вводе.

Но с этой настройкой я не могу ограничить тип QuotationRequestUtils, чтобы иметь исправлен набор методов. То есть, если я вызываю QuotationRequestUtils.getAbc() (метод, который не существует в Util), я не получаю сообщение об ошибке.


В качестве альтернативы я попытался

/**
  *
  * @typedef {Object} QuotationRequestUtils
  * @property {function({currentView: string, insuranceType: string}): string} getNextView
  * @property {function({this: number, that: string}): number} getSomething
  *
  */

/**@type {QuotationRequestUtils} */
export const QuotationRequestUtils = {
/**
   *
   * @param {Object} param0
   * @param {string} param0.currentView
   * @param {string} param0.insuranceType
   *
   * @returns {string}
   */
  getNextView({ currentView, insuranceType }) { return "str" },

  /**
   *
   * @param {Object} param0
   * @param {number} param0.this
   * @param {string} param0.that
   *
   * @returns {number}
   */
  getSomething({ this, that }) { return 2 }
}

Это помогает ограничить QuotationRequestUtils наличием фиксированного набора помощников, но:

  • Не удобно документировать сигнатуры функций в одной строке
  • Документы над каждой вспомогательной функцией: больше не используется (то есть, если я удаляю сигнатуру функции из typedef, утверждения arg больше не делаются)
  • IDE предлагает их как properties, а не methods - не большая проблема, но раздражение

Какой лучший способ go об этом?

...