2014-04-01 42 views
6

jsDoc我可以指定像这样我的阵列参数和成员:jsDoc - 如何指定数组长度

/** 
* @constructor 
* @param {Array.<string>} myArray 
*/ 
function someFunction(myArray){ 

    this.firstArray = myArray; 

    /** @member {Array.<float>} */ 
    this.secondArray = []; 

} 

有还指定length,或minLengthmaxLength这些阵列的方法吗?

回答

4

我想你是问你是否可以在类型表达式中包含最小/最大长度(例如,Array.<string>)。

总之,答案是否定的。您需要记录每个阵列描述中的最小/最大长度。

+0

我需要准确地描述数组的长度。有没有办法做到这一点? – Hitmands

1

我已经浏览了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) { 
    ... 
} 

仅供参考,您可以使用Array.<number>,或Array<number>,甚至number[]@type的声明中。

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