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

Adding sub-properties to an existing property-list in jsdoc

本文关键字:属性 列表 jsdoc 添加      更新时间:2023-09-26

我正在尝试在我们的JS库中自动化一个特定的模块,并且卡在了我想定义一组属性的点(假设一个对象作为类的构造参数)。

/**
 * This function initiates world peace!
 * @constructor
 * @param {object}  defaults        - The options to initiate peace.
 * @param {number}  defaults.issues - The number of issues being taken up.
 * @param {string}  defaults.source - The name of the location where process starts.
 */
 var WorldPeace = function (defaults) {
     // code here
 };
在一个

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

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

如何添加到我之前为函数定义的原始属性集WorldPeace?做一些类似混合或子类化属性的事情会过火!因此,如果我能简单地注入到属性列表定义中,那就太好了。

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

/**
 * 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 {{
 *   issues: number,
 *   source: string
 * }}
 */
var WorldPeaceOptions;
/**
 * @constructor
 * @param {WorldPeaceOptions} defaults
 */
var WorldPeace = function (defaults) {
  // code here
};