Как ссылаться на @class в другом файле с помощью JSDoc?

#javascript #jsdoc #jsdoc3

#javascript #jsdoc #jsdoc3

Вопрос:

Например. MyClass.js

 /**
 * @class
 * @name module:Bar
 * @param {number} a1
 * @param {string} a2
 */
function Bar(a1, a2){}
  

И в другом файле:

 /** @type module:Bar.constructor */ // made up syntax
var Bar = require("./MyClass.js");
  

Переопределение @class работает, но это не удобно:

 /**
 * @class
 * @name module:Bar
 * @param {number} a1
 * @param {string} a2
 */
var Bar = require("./MyClass.js");
  

Как мне это сделать?

Ответ №1:

Одного имени класса должно быть достаточно.

 /**
 * @type module:Bar
 */
var Bar = require("./MyClass.js");
  

Вы должны использовать @alias вместо @name :

Предупреждение: используя тег @name, вы указываете JSDoc игнорировать окружающий код и рассматривать ваш комментарий к документации изолированно. Во многих случаях лучше всего вместо этого использовать тег @alias, который изменяет имя символа в документации, но сохраняет другую информацию о символе.

 /**
 * @class
 * @alias module:Bar
 * @param {number} a1
 * @param {string} a2
 */
function Bar(a1, a2){}
  

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

1. это ссылается на экземпляры Bar, а не на конструктор Bar

2. документация jsdoc настолько неясна. как мне избежать записи @param дважды?

3. Другого способа сделать это нет. Вам нужно ввести одну строку для каждого параметра, это то же правило для членов класса: usejsdoc.org/tags-member.html !

4. да, но я ссылаюсь на класс / функцию / все, что уже определено где-то в другом месте. хотя кажется, что @alias — это то, что мне нужно