JSDoc链接到callback函数

我决定使用JSDoc来logging我正在处理的一个项目。 在阅读使用指南和问题的时候,我仍然觉得我并没有把握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; 

在这里,我定义了一个模块,指出了一个构造函数,并logging了一个将callback作为其参数之一的方法。 听起来很简单,似乎遵循使用指南http://usejsdoc.org/设定的指导方针。

但由于某种原因超出我的理解(这可能是我没有得到的核心概念),它显示callbackmyCallback作为testModule而不是Test类的成员。 它不应该默认是类的成员,而不是模块? 这也似乎阻止JSDoc链接到callback定义,这是不是很有趣。

现在我意识到,如果我要写:

 /** * @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 */ 

我会得到我想要的行为。 但是,这似乎是一种非常笨重的做事方式,所产生的联系远非如此。

对不起,长时间的积累,并提前感谢您在我的文档工作中的帮助:)

我遇到了很多相同的问题。 如果你想要更好看的链接,你可以在描述中添加一个{@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 */ 

我意识到input有点令人沮丧,但它将myCallback为类的成员而不是模块,链接看起来不错。

如果你真的想要@type的链接,并且不关心它是如何loggingcallback的,那么也可以这样做,这是一个不那么冗长的(以及我决定为我的项目做的):

 /** * @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并将其logging为模块的成员。