【问题标题】: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,或minLengthmaxLength

【问题讨论】:

    标签: javascript arrays jsdoc maxlength specifications


    【解决方案1】:

    我想您是在问是否可以在类型表达式中包含最小/最大长度(例如,Array.&lt;string&gt;)。

    简而言之,答案是否定的。您需要在每个数组的描述中记录最小/最大长度。

    【讨论】:

    • 我需要准确描述数组长度。有没有办法做到这一点?
    【解决方案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.&lt;number&gt;,或 Array&lt;number&gt;,甚至是 number[]

    如果此功能对您很重要(我肯定会使用它!),您可以submit an issue

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多