#javascript #intellij-idea #jsdoc
#javascript #intellij-идея #jsdoc
Вопрос:
У меня есть factory
функция, которая определяет и возвращает другую функцию — myFunc
. Я хочу документировать свои рабочие переменные с помощью JSDoc:
function factory() {
function myFunc(param) {
console.log(`Hello ${param}!`);
}
return myFunc;
}
/** @type {factory} */
const fact = factory;
/** @type {???} */
const fn = fact();
fn('world');
Я могу документировать factory
функцию:
/** @type {factory} */
const fact = factory;
но моя IDE (IDEA PhpStorm) не может разрешить внутреннюю функцию таким же образом:
/** @type {myFunc} */
const fn = factory();
В этом случае я не могу использовать навигацию по Ctrl click. Существует ли какой-либо метод для решения внутренней функции? Что-то. Нравится factory#myFunc
:
/** @type {factory#myFunc} */
const fn = factory();
Ответ №1:
Это возможно с помощью @exports
директивы для вложенной функции:
function factory() {
/** @exports myFunc */
function myFunc(param) {
console.log(`Hello ${param}!`);
}
return myFunc;
}
/** @type {factory} */
const fact = factory;
/** @type {myFunc} */
const fn = fact();
fn('world');
Ответ №2:
Ваша factory
возвращает функцию, которая принимает строку и ничего не возвращает.
Это может быть выражено с помощью выражения типа с использованием @return
тега:
/** @return {function(string): void} */
function factory() {
function myFunc(param) {
console.log(`Hello ${param}!`);
}
return myFunc;
}
Если x
присвоен результат factory()
, ваша среда разработки должна иметь возможность определить его тип:
Комментарии:
1. В этом случае моя среда разработки PhpStorm не может перемещаться с
myFunc
помощью «Ctrl Click»: (Моя первая цель — навигация по коду, а не просто определение возвращаемых значений с помощью JSDoc. В любом случае спасибо за ваш ответ 🙂