Javascript 将子属性添加到jsdoc中的现有属性列表

Javascript 将子属性添加到jsdoc中的现有属性列表,javascript,google-closure-compiler,google-closure,jsdoc,code-documentation,Javascript,Google Closure Compiler,Google Closure,Jsdoc,Code Documentation,我正试图自动化我们JS库中的一个特定模块,但我仍停留在一个需要定义一组属性(比如说一个作为类的构造参数的对象)的位置 如果在一个位置定义了建筑的所有属性,那么它是很好的。不幸的是,我的代码中有许多模块构成了这种构造属性。比方说,在代码的其他部分(在后面的文件中),会导致更多的属性 * @param {Date} defaults.start - The date when the process started. * @param {Date} defaults.stop - The

我正试图自动化我们JS库中的一个特定模块,但我仍停留在一个需要定义一组属性(比如说一个作为类的构造参数的对象)的位置

如果在一个位置定义了建筑的所有属性,那么它是很好的。不幸的是,我的代码中有许多模块构成了这种构造属性。比方说,在代码的其他部分(在后面的文件中),会导致更多的属性

 * @param {Date} defaults.start  - The date when the process started.
 * @param {Date} defaults.stop   - The date when the process should stop.

如何添加到先前为
WorldPeace
函数定义的原始属性集?做一些类似于mixin或子类化属性的事情会太过分了!因此,如果我可以简单地插入属性列表定义,那就太好了。

最简单的方法是使用记录类型:

/**
 * This function initiates world peace!
 * @constructor
 * @param {{issues: number, source: string}} defaults - options to initiate peace.
 */
var WorldPeace = function (defaults) {
  // code here
};
您还可以实现一个接口:

/** @interface */
var WordPeaceDefaults;

/** @type {number} */
WorldPeaceDefaults.prototype.issues;

/** @type {string} */
WorldPeaceDefaults.prototype.source;

/**
 * This function initiates world peace!
 * @constructor
 * @param {WorldPeaceDefaults} defaults - options to initiate peace.
 */
var WorldPeace = function (defaults) {
  // code here
};

/**
 * @constructor
 * @implements {WorldPeaceDefaults}
 */
function MyWorldPeaceDefaults() {}

/** @type {number} */
MyWorldPeaceDefaults.prototype.issues = 0;

/** @type {string} */
MyWorldPeaceDefaults.prototype.source = '';

WordPeace(new MyWorldPeaceDefaults);

另一种方法是使用typedef:

/**
*@typedef{{
*问题:数目,,
*资料来源:string
* }}
*/
风险价值选择;
/**
*@constructor
*@param{WorldPeaceOptions}默认值
*/
var WorldPeace=函数(默认值){
//代码在这里
};

界面在技术上是正确的-但它将再次远离功能进行记录-就像我前面提到的,太过火了。我仍然会看到它是否产生了比我以前做的更好的东西!:-)接口方式以类似类的方式记录事物,因此,在我只想将其作为枚举器或属性列表列出的文档中,“过火”:(
/** @interface */
var WordPeaceDefaults;

/** @type {number} */
WorldPeaceDefaults.prototype.issues;

/** @type {string} */
WorldPeaceDefaults.prototype.source;

/**
 * This function initiates world peace!
 * @constructor
 * @param {WorldPeaceDefaults} defaults - options to initiate peace.
 */
var WorldPeace = function (defaults) {
  // code here
};

/**
 * @constructor
 * @implements {WorldPeaceDefaults}
 */
function MyWorldPeaceDefaults() {}

/** @type {number} */
MyWorldPeaceDefaults.prototype.issues = 0;

/** @type {string} */
MyWorldPeaceDefaults.prototype.source = '';

WordPeace(new MyWorldPeaceDefaults);