Сохранение комментариев jsdoc и VS Code intellisense с помощью babel

#visual-studio-code #babeljs #intellisense #jsdoc

#visual-studio-code #babeljs #intellisense #jsdoc

Вопрос:

У меня есть библиотека javascript для взаимодействия с серверными API, написанная на современном ECMAScript.

Он полностью документирован с комментариями JSDoc:

 /**
 *  @class - TODOS API Client class
 */
class todosApi {
    /**
   * Gets Todos, given the parameters
   * @param {number} personId
   * @param {number} [year]
   * @param {number} [month]
   * @param {number} [todoTypeId]
   * @returns {Object} - api response object, data will be array of todos
   */
  fetchTodos = async (....
}
 

При использовании этого API в модульных тестах в этом проекте, в Visual Studio code, я получаю отличный intellisense из этих комментариев, и это прекрасно.

Однако эта библиотека используется / упоминается в отдельном приложении react, созданном с помощью create-react-app. Когда я запускаю это через babel для переноса в формат, который используется моим приложением create-react-app, это заканчивается так:

 /**
 *  @class - TODOS API Client class
 */
class todosApi {
          _defineProperty(this, "fetchTodos", async (personId, eventYear, eventMonth, todoTypeId) => {
    }
 

И я теряю свой intellisense для fetchTodos и фактически сам класс из-за того, как он экспортируется в и index.js досье. у babel есть возможность включать комментарии по умолчанию, однако класс немного искажается при переносе и теряет некоторые комментарии.

Есть ли какой-либо способ перенести и сохранить этот intellisense для VS Code?

Комментарии:

1. Может быть, я мог бы как-то импортировать файл с помощью @typedef?

Ответ №1:

Используйте tsd-jsdoc для создания файла types.d.ts.

В вашем package.json добавьте скрипт для запуска…

 jsdoc -r src -t node_modules/tsd-jsdoc/dist -d lib
 

И установите types значение lib/types.d.js .

Включите этот скрипт как часть prepublishOnly , чтобы он выполнялся перед каждым npm publish .

Комментарии:

1. Я собираюсь проверить это, спасибо. В итоге я написал файлы определения машинописного текста от руки.

2. Это здорово, но учтите, что вам нужно вручную добавить export const ${type}: ${type} , чтобы заставить его работать с Intellisense: github.com/englercj/tsd-jsdoc/issues/64