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

Например. 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");

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


person Wes    schedule 19.10.2016    source источник


Ответы (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){}
person Axel Isouard    schedule 19.10.2016
comment
который ссылается на экземпляры Bar, а не на конструктор Bar - person Wes; 19.10.2016
comment
Документация jsdoc настолько неясна. как мне не писать @param дважды? - person Wes; 19.10.2016
comment
Другого способа сделать это нет. Вам нужно ввести одну строку для каждого параметра, это же правило для членов класса: usejsdoc.org/tags- член.html ! - person Axel Isouard; 19.10.2016
comment
да, но я ссылаюсь на класс/функцию/что-то, что уже определено где-то еще. хотя кажется, что @alias - это то, что мне нужно - person Wes; 19.10.2016