我决定使用JSDoc来记录我正在处理的项目。在阅读使用指南和问题时,我仍然觉得我没有理解JSDoc的一些核心概念,我在下面的例子中说明了我的无能:http://jsfiddle.net/zsbtykpv/
/**
* @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
*/
我会得到我想要的行为。但这似乎是一种非常笨重的做事方式,生成的链接远非漂亮。
对于长时间的累积感到抱歉,并提前感谢您在我的文档工作中提供的帮助:)