JSDoc继承参数文档

时间:2015-04-08 17:30:47

标签: jsdoc

假设我有两个函数,其中一个函数扩展另一个函数。

/**
* @abstract
* @param {Object} settings
* @param {Number} settings.x
* @param {Number} settings.y
* 
*/
function Base(settings) {
    this.x = settings.x;
    this.y = settings.y;
}

/**
* @extends Base
*/
function Foo(settings) {
    Base.call(this, settings);    
}

这两个功能分为两个单独的文件。有没有办法可以从Base函数中的Foo函数继承参数文档,还是必须编写两次文档?

我尝试像这样settings @typedef

/**
 * @typedef {Object} BaseSettings
 * @property {Number} x
 * @property {Number} y
 *
 */

/**
* @extends Base
* @param {BaseSettings} settings
*/
function Foo(settings) {
    Base.call(this, settings);    
}

但这只是链接到全局类型定义,我希望参数记录在与该函数相同的页面上。但是,如果没有两次编写文档,这是否可能?

2 个答案:

答案 0 :(得分:3)

我不认为这可以做到。您可以像问题一样通过@typedef对其进行记录,但只会将类型与其定义相关联。我不知道内联定义类型的方法。

答案 1 :(得分:0)

有一种方法可以内联定义子类,但我不认为它在这种特殊情况下有帮助。无论如何它可能会帮助其他人:

/** 
 * @defines my.class
 */
function MyClass () {};

var mySubType = /** @lends my.class.prototype */{
    attribute: test
}

var result = myWhateverFunction(myVar, /** @lends my.class.prototype */{ subattr: 1 }) {
   return true;
}

这实际上应该适用于任何对象文字场景。我们将它与功能驱动对象继承框架(遗留dojo 1.10声明)结合使用,您可以在函数调用中使用对象文字来派生

这样我们就可以正确记录继承。

相关问题