90

次のようなものがあるとしましょう。

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-可変数のパラメーターをドキュメント化する方法

4

4 に答える 4

130

JSDoc仕様Google の Closure Compilerは次のようにします。

@param {...number} var_args

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

これを完全に使用すると、次のようになります。

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

追加の引数にアクセスするargumentsために (またはの一部のオフセット) を利用することに関するコメントに注意してください。引数が実際に存在することをIDEに通知するために使用されていました。argumentsvar_args

ES6 の残りのパラメーターは、実際のパラメーターをさらに一歩進めて、指定された値を含めることができます (したがって、これ以上 を使用するarguments必要はありません)。

/**
* @param {...*} var_args
*/
function lookMaImES6Variadic(...var_args) {
    // Utilize the `var_args` array here, not `arguments`.
}
于 2011-01-30T07:30:28.493 に答える
31

これを行う方法は JSDoc ドキュメントに記載されており、Closure ドキュメントと同様に省略記号を使用しています。

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

省略記号の後にタイプを指定する必要がありますが、 a を使用し*て何でも受け入れることを記述したり、 を使用し|て複数の受け入れ可能なタイプを分離したりできます。生成されたドキュメンテーションでは、JSDoc は、オプションの引数をoptionalとして説明するのと同じ方法で、この引数をrepeatableとして説明します。

私のテストでは、実際の JavaScript 関数定義に引数を含める必要はなかったので、実際のコードには空の括弧を含めることができますfunction whatever() { ... }

シングルタイプ:

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

任意のタイプ (以下の例では、角括弧の意味itemsはオプションと繰り返しの両方としてタグ付けされます):

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

複数の型には、型リストを括弧で囲み、開き括弧の前に省略記号を付ける必要があります。

@param {...(Person|string)} attendees - Meeting attendees, listed as either 
                                        String names or {@link Person} objects
于 2015-02-16T06:49:10.800 に答える
10

JSDoc ユーザー グループから:

正式な方法はありませんが、考えられる解決策の 1 つは次のとおりです。

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

角括弧はオプションのパラメーターを示し、... は (私にとって) 「任意の数値」を示します。

もう一つの可能​​性はこれです...

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

どちらの方法でも、あなたの意図を伝える必要があります。

少し古いですが (2007 年)、それ以上の最新情報は知りません。

パラメータ タイプを「混合」として文書化する必要がある場合は、 のように を使用{*}@param {*} [arguments]ます。

于 2011-10-31T13:50:46.737 に答える
10

私はかなり長い間これに悩まされていました。Google Closure Compiler でそれを行う方法は次のとおりです。

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

重要なのは、関数が実際にはそのパラメーターを使用していなくても、関数にvar_argsパラメーター (またはステートメントで呼び出すもの) を与えることです。@param

于 2014-01-19T03:28:08.527 に答える