我决定使用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/设置的指导原则。
但由于某种超出我理解的原因(这可能是我不理解的核心概念),它将回调测试显示为testModule类的成员,而不是myCallback类。它不应该默认是类的成员而不是模块的成员吗?这似乎也阻止了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
*/
我会得到我想要的行为。但这似乎是一种非常笨拙的方式,生成的链接远不美观。
很抱歉造成了很长时间的积累,并提前感谢您在我的文档工作中的帮助:)
发布于 2017-08-11 21:26:23
我也遇到过类似的问题。如果你想要更好看的链接,你可以随时在描述中添加一个{@link}
,并在@type
中使用规范的名称,如下所示:
/**
* @callback module:testModule~Test~myCallback
* @param {Object} data An object that contains important data.
*/
/**
* @param {myCallback} cb {@link module:testModule~Test~myCallback|myCallback}: a callback function
* @return {boolean} always returns true
*/
我知道这有点令人沮丧,但它将myCallback
记录为类的成员,而不是模块,并且链接看起来很好。
如果你真的想要@type
中的链接,并且你不关心它是如何记录回调的,你也可以这样做,这样做不会那么冗长(这也是我决定为我的项目做的):
/**
* @callback myCallback
* @param {Object} data An object that contains important data.
*/
/**
* @param {module:testModule~myCallback} cb a callback function
* @return {boolean} always returns true
*/
这将正确地链接到myCallback
,并将其记录为模块的成员。
https://stackoverflow.com/questions/28110249
复制相似问题