我正在尝试使我们的 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
函数定义的原始属性集添加进去?做一些像 mixin 或子类化属性的事情太过分了!因此,如果我可以简单地注入(inject)属性列表定义,那就太好了。
最佳答案
最简单的方法是使用记录类型:
/**
* This function initiates world peace!
* @constructor
* @param {{issues: number, source: string}} defaults - options to initiate peace.
*/
var WorldPeace = function (defaults) {
// code here
};
你也可以实现一个接口(interface):
/** @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);
关于javascript - 将子属性添加到 jsdoc 中的现有属性列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19113571/