Powiedzmy, że masz coś takiego:
var someFunc = function() {
// do something here with arguments
}
Jak poprawnie udokumentowałbyś, że ta funkcja może przyjmować dowolną liczbę argumentów w JSDoc? To moje najlepsze przypuszczenie, ale nie jestem pewien, czy jest poprawne.
/**
* @param {Mixed} [...] Unlimited amount of optional parameters
*/
var someFunc = function() {
// do something here with arguments
}
Związane z: php - Jak dociągnąć zmienną liczbę parametrów
źródło
var_args
lub cokolwiek chcesz wywołać. Smutny hack./** @param {...Function} tasks The tasks. */ function waterfallTasks(...tasks) {
Pozostałe parametry zawsze mają funkcjonalną obecność w parametrach.Jak to zrobić, jest teraz opisane w dokumentacji JSDoc i używa wielokropka, tak jak robią to dokumenty Closure.
@param {...<type>} <argName> <Argument description>
Musisz podać typ, aby przejść po wielokropku, ale możesz użyć a,
*
aby opisać, że akceptujesz cokolwiek, lub użyć,|
aby oddzielić wiele akceptowalnych typów. W wygenerowanej dokumentacji JSDoc opisuje ten argument jako powtarzalny , w ten sam sposób, w jaki opisuje argumenty opcjonalne jako opcjonalne .Podczas moich testów nie było potrzeby posiadania argumentu w rzeczywistej definicji funkcji javascript, więc rzeczywisty kod może mieć po prostu puste nawiasy, tj
function whatever() { ... }
.Pojedynczy typ:
Dowolny typ (w poniższym przykładzie średnia nawiasów kwadratowych
items
zostanie oznaczona jako opcjonalna i powtarzalna):Wiele typów wymaga nawiasów wokół listy typów, z wielokropkiem przed otwierającym oknem:
@param {...(Person|string)} attendees - Meeting attendees, listed as either String names or {@link Person} objects
źródło
@param {{...(key: value)}} [config] - specific configs for this transfer
ale zastanawiałem się, czy to prawda?Z grupy użytkowników JSDoc :
Jest trochę przestarzały (2007), ale nie znam niczego bardziej aktualnego.
Jeśli chcesz udokumentować typ parametru jako „mieszany”, użyj
{*}
, jak w@param {*} [arguments]
.źródło
@param [arguments]
(lub@param {*} [arguments]
o to chodzi), a także składnię ustanowioną przez kompilator Google Closure (wspomniany w innej odpowiedzi).@param [...]
nie jest wspierany.Długo się tym przejmowałem. Oto jak to zrobić za pomocą Google Closure Compiler:
/** * @param {...*} var_args */ function my_function(var_args) { // code that accesses the magic 'arguments' variable... }
Kluczem jest nadanie funkcji
var_args
parametru (lub jakkolwiek nazwiesz to w@param
instrukcji), nawet jeśli funkcja w rzeczywistości nie używa tego parametru.źródło