#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 — это то, что мне нужно