JSDoc继承参数文档
JSDoc inheriting parameter documentation
假设我有两个函数,其中一个扩展了另一个。
/**
* @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);
}
这两个函数在两个单独的文件中。有什么方法可以在我的 Foo
函数中从 Base
函数继承参数文档,还是我必须写两次文档?
我试过把 settings
变成 @typedef
这样的:
/**
* @typedef {Object} BaseSettings
* @property {Number} x
* @property {Number} y
*
*/
/**
* @extends Base
* @param {BaseSettings} settings
*/
function Foo(settings) {
Base.call(this, settings);
}
但这只是链接到全局类型定义,我希望参数与函数记录在同一页面上。但是,如果不编写两次文档,这甚至可能吗?
我不认为这是可以做到的。您可以像在您的问题中那样通过 @typedef
对其进行记录,但它只会 link 其定义的类型。我不知道内联定义类型的方法。
有一种内联定义子类的方法,但我认为它在这种特殊情况下没有帮助。无论如何,也许它对其他人有帮助:
/**
* @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 声明)结合使用,您可以在函数调用中使用对象文字进行派生
这样我们就可以正确记录继承。
假设我有两个函数,其中一个扩展了另一个。
/**
* @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);
}
这两个函数在两个单独的文件中。有什么方法可以在我的 Foo
函数中从 Base
函数继承参数文档,还是我必须写两次文档?
我试过把 settings
变成 @typedef
这样的:
/**
* @typedef {Object} BaseSettings
* @property {Number} x
* @property {Number} y
*
*/
/**
* @extends Base
* @param {BaseSettings} settings
*/
function Foo(settings) {
Base.call(this, settings);
}
但这只是链接到全局类型定义,我希望参数与函数记录在同一页面上。但是,如果不编写两次文档,这甚至可能吗?
我不认为这是可以做到的。您可以像在您的问题中那样通过 @typedef
对其进行记录,但它只会 link 其定义的类型。我不知道内联定义类型的方法。
有一种内联定义子类的方法,但我认为它在这种特殊情况下没有帮助。无论如何,也许它对其他人有帮助:
/**
* @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 声明)结合使用,您可以在函数调用中使用对象文字进行派生
这样我们就可以正确记录继承。