2014-04-01 84 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