【问题标题】:jsDoc - how to specify array lengthjsDoc - 如何指定数组长度
【发布时间】:2014-04-01 12:42:44
【问题描述】:
在jsDoc 中,我可以像这样指定我的数组参数和成员:
/**
* @constructor
* @param {Array.<string>} myArray
*/
function someFunction( myArray ){
this.firstArray = myArray;
/** @member {Array.<float>} */
this.secondArray = [];
}
还有没有办法指定这些数组中的length,或minLength 和maxLength?
【问题讨论】:
标签:
javascript
arrays
jsdoc
maxlength
specifications
【解决方案1】:
我想您是在问是否可以在类型表达式中包含最小/最大长度(例如,Array.<string>)。
简而言之,答案是否定的。您需要在每个数组的描述中记录最小/最大长度。
【解决方案2】:
虽然无法指定数组的大小 [限制],但对于固定长度的数组,例如“元组”,可以使用 type expression:
/**
* @returns {[number, number, number]}
*/
function getLuckyThree() { … }
【解决方案3】:
我查看了 UseJSDoc.org 和 Google 的 Closure Compiler,但两个文档都没有描述如何指定数组长度。
我的猜测是编译器只检查类型,而不是长度,所以即使有明确描述数组长度的语法,长度不正确的数组可能仍会通过编译器(不会抛出错误)。
最好的方法是在参数和返回类型的人类语言描述中:
/**
* Duplicates a 4-length array into itself.
* e.g. `[2, 3, 5, 8] => [2, 2, 3, 3, 5, 5, 8, 8]`
* @param {Array<number>} arr the array to duplicate (exactly 4 entries)
* @returns {Array<number>} the result (an array of length 8)
*/
function dupe(arr) {
...
}
仅供参考,您可以在 @type 声明中使用 Array.<number>,或 Array<number>,甚至是 number[]。
如果此功能对您很重要(我肯定会使用它!),您可以submit an issue。