假设我有两个函数,其中一个函数扩展另一个函数。
/**
* @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);
}
但这只是链接到全局类型定义,我希望参数记录在与该函数相同的页面上。但是,如果没有两次编写文档,这是否可能?
答案 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声明)结合使用,您可以在函数调用中使用对象文字来派生
这样我们就可以正确记录继承。