1. ホーム
  2. javascript

[解決済み] JSDocにおけるオープンエンド引数関数の正しい文書化方法

2023-03-22 21:46:19

質問

例えば、次のようなものがあるとします。

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 - パラメータを可変個数指定する方法

どのように解決するのですか?

この JSDoc仕様 Googleのクロージャコンパイラ はこのようにします。

@param {...number} var_args

ここで、"number"は期待される引数のタイプです。

では、完全な使い方は次のようになります。

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

の利用についてのコメントに注意してください。 arguments (を利用すること(あるいは arguments ) を使って追加引数にアクセスできます。 var_args は、IDEに引数が本当に存在することを知らせるために使われるだけです。

ES6におけるレストパラメータ は、実際のパラメータをさらに一歩進めて、提供された値を包含することができます (従って、もう arguments は必要ありません)。

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