Я решил использовать JSDoc для документирования проекта, над которым я работаю. При чтении руководства по использованию и вопросов здесь я все еще чувствую, что я не хватать некоторых из основных понятий JSDoc и я иллюстрировал свою некомпетентность в следующем примере: http://jsfiddle.net/zsbtykpv/JSDoc ссылки на функцию обратного вызова
/**
* @module testModule
*/
/**
* @constructor
*/
var Test = function() {
/**
* @callback myCallback
* @param {Object} data An object that contains important data.
*/
/**
* A method that does something async
* @param {myCallback} cb a callback function
* @return {boolean} always returns true
*/
this.method = function(cb) {
doSomethingAsync(function(data) {
cb(data);
});
return true;
}
}
module.exports = Test;
Здесь я определил модуль, обозначенный конструктор и задокументировал метод, который выполняет обратный вызов как один из его «параметров». Звучит довольно просто и, как представляется, соответствует рекомендациям, приведенным в руководстве по использованию http://usejsdoc.org/.
Но по какой-то причине, кроме моего понимания (и это, вероятно, основная концепция, которую я не получаю), она показывает обратный вызов myCallback как член testModule вместо класса Test. Должен ли он по умолчанию быть членом класса, а не модуля? Это также мешает JSDoc сделать ссылку на определение обратного вызова, что не очень весело.
Теперь я понимаю, что если бы я писал:
/**
* @callback module:testModule~Test~myCallback
* @param {Object} data An object that contains important data.
*/
/**
* A method that does something async
* @param {module:testModule~Test~myCallback} cb a callback function
* @return {boolean} always returns true
*/
Я хотел бы получить свое желаемое поведение. Но это, кажется, очень неуклюжий способ делать что-то, а сгенерированные ссылки далеки от хороших.
Извините за длинный раскачки и заранее спасибо за вашу помощь в моей документации усилий :)