2011-01-18 30 views
57

比方說,你有類似如下:正確記錄在JSDoc開放式參數的函數的方式

var someFunc = function() { 
    // do something here with arguments 
} 

你如何正確地記錄,這個功能可以採取任何數量的JSDoc參數呢?這是我最好的猜測,但我不確定它是否正確。

/** 
* @param {Mixed} [...] Unlimited amount of optional parameters 
*/ 
var someFunc = function() { 
    // do something here with arguments 
} 

相關的:php - How to doc a variable number of parameters

回答

69

JSDoc specsGoogle's Closure Compiler這樣來做:

@param {...number} var_args 

其中 「數」 是參數期望的類型。

的這個完整的用法,然後,將類似於以下內容:

/** 
* @param {...*} var_args 
*/ 
function lookMaImVariadic(var_args) { 
    // Utilize the `arguments` object here, not `var_args`. 
} 

備註利用arguments(或arguments抵消部分)的評論來訪問你的額外的參數。 var_args它只是用來向您的IDE發信號確實存在。

Rest parameters in ES6可以採取實際參數一步涵蓋提供的值(所以沒有更多的用途的arguments是必要的):

/** 
* @param {...*} var_args 
*/ 
function lookMaImES6Variadic(...var_args) { 
    // Utilize the `var_args` array here, not `arguments`. 
} 
+0

這是p可以接近我們可以得到的答案:) – kflorence 2011-02-04 00:46:54

+2

也值得注意的是,WebStorm的內部JSDoc文件(DHTML.js等)使用相同的語法。也許這是事實上的標準。 – 2012-07-18 20:52:01

+2

它在這裏也有很好的描述:http://usejsdoc.org/tags-param.html('允許參數重複') – Francois 2014-07-25 21:23:46

9

JSDoc users group

這裏沒有任何官方的方式,但一個可能的解決方案是這樣的:

/** 
* @param [...] Zero or more child nodes. If zero then ... otherwise .... 
*/ 

方括號表示一個可選參數,並且...(對我)表示「一些任意數字」。

另一種可能性是這...

/** 
* @param [arguments] The child nodes. 
*/ 

無論哪種方式,應該傳達你的意思。

儘管(2007)雖然有點過時,但我沒有意識到任何更新鮮的東西。

如果您需要將參數類型記錄爲「混合」,請使用{*},如@param {*} [arguments]中所述。

10

我已經用了很長一段時間。以下是如何與谷歌關閉編譯做到這一點:

/** 
* @param {...*} var_args 
*/ 
function my_function(var_args) { 
    // code that accesses the magic 'arguments' variable... 
} 

的關鍵是給出函數的var_args參數(或者無論你怎麼稱呼它在你的@param聲明),即使功能實際上並不使用該參數。

20

在JSDoc文檔中如何做到這一點是now described,它使用像Closure文檔那樣的省略號。

@param {...<type>} <argName> <Argument description> 

您需要提供一個類型的省略號後去的,但你可以用一個*來形容接受任何東西,或使用|分隔多個可接受的類型。在生成的文檔中,JSDoc將會將此參數描述爲可重複的,與其描述可選參數的方式相同,如可選

在我的測試中,沒有必要在實際的javascript函數定義中有一個參數,所以您的實際代碼只能有空括號,即function whatever() { ... }

單類型:

@param {...number} terms Terms to multiply together 

任何類型(在下面的例子中,方括號表示items將得到標記爲兩個可選的和可重複):

@param {...*} [items] - zero or more items to log. 

多種類型的需要周圍的括號鍵入列表,用開頭paren前的省略號:

@param {...(Person|string)} attendees - Meeting attendees, listed as either 
             String names or {@link Person} objects 
相關問題