Как сказано в документации JSDoc для тега @type
;
Каждый тип указывается с помощью выражения типа с использованием одного из форматов, описанных ниже.В соответствующих случаях JSDoc автоматически создает ссылки на документацию для других символов.Например, @type {MyClass}
будет ссылаться на документацию MyClass, если этот символ был задокументирован.
Пример:
A.js:
/**
* Class A.
*/
class A {
/**
* Create a new instance of class A.
*/
constructor(name) {
/** @member {string} */
this.name = name;
}
}
module.exports = A;
B.js:
const A = require('./A.js');
/**
* My function B.
* @returns {A} A person.
*/
function myFuncB(n) {
/** @type {A} */
let i = new A(n);
return i;
}
Обычное поведение:
В документах, генерируемых JSDoc, тип возврата этой функции (myFuncB(n) -> {A}
) будет отображаться и будет ссылаться на класс A (по умолчанию ссылки выделены синим цветом с шаблоном JSDoc по умолчанию).
Опытное поведение:
Однако , это не тот случай, если класс A явно сделан членом модуля:
A.js:
/**
* Class A.
* @memberof module:myModels/myModuleName
*/
class A {
/**
* Create a new instance of class A.
*/
constructor(name) {
/** @member {string} */
this.name = name;
}
}
module.exports = A;
(при условии, что модуль существует)
Теперь в B.js , A отображаетсяс типом any
и, кроме того, функция больше не ссылается на класс A: myFuncB(n) -> {A}
, но без ссылки.(«A» не содержит ссылки на документацию по классу и не выделяется синим цветом)
Нужно ли указывать модуль класса?Почему ссылка на класс А пропала?