#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