インラインJSDocを使用してパラメーターがオプションであることを示す方法は?


119

@paramのJSDoc wikiによると、@ param はオプションで

/**
    @param {String} [name]
*/
function getPerson(name) {
}

あなたはのparam示すことができ、インラインを使用して

function getPerson(/**String*/ name) {
}

そして、私は次のようにそれらを組み合わせることができます、それはうまくいきます。

/**
    @param [name]
*/
function getPerson(/**String*/name) {
}

しかし、可能であればすべてをインラインで実行する方法があるかどうかを知りたいです。

回答:


123

公式ドキュメントから:

オプションのパラメーター

fooという名前のオプションパラメータ。

@param {number} [foo]
// or:
@param {number=} foo

デフォルト値1のオプションパラメータfoo。

@param {number} [foo=1]

7
インラインでそれを行う方法を尋ねていました。あなたが提供している例は、私の質問で示したものと同じようです。
studgeek

67

掘り下げた後、これらも大丈夫であることがわかりました

/**
 * @param {MyClass|undefined}
 * @param {MyClass=}
 * @param {String} [accessLevel="author"] The user accessLevel is optional.
 * @param {String} [accessLevel] The user accessLevel is optional.
 */

よりわずかに視覚的に魅力的です function test(/**String=*/arg) {}


9
それらは有効です(そしてJSDocヘルプに記載されています)が、インラインではありません-私が探していたものです。
studgeek 2013

質問は、インラインJSDoc表記についてです。この興味深い情報ですが、質問に答えていない
ケン・ベローズ

51

Google Closure Compilerの型式を使用してこれを行う方法を見つけました。あなたは次のようにタイプの後に等号を置きます: function test(/**String=*/arg) {}


10
WebStorm / IntellIDEAはこの表記をサポートしています
Peter Aron

3
はい、そのため、回答としてマークするために十分に受け入れられたと思います。
studgeek 2012

4
@PeterAronZentai、私はWebStorm / IntelliIDEAをサポートする機能を追加した結果、それをサポートします:) 現在、Google Closure Compilerの型式の大部分をサポートしています。
studgeek 2013

1
オプションの2番目のパラメーターでは機能しません。
DaveWalley 2014年

1
リンクを修正してください。404ページにつながる
chharvey 2017

3

関数の引数にインライン型のコメントを使用していて、その表記法で関数の引数をオプションとしてマークする方法を考えている場合、オプションの引数にデフォルト値を割り当てるだけでうまくいくことがわかりました。デフォルトにしたい場合は、undefined明示的に設定する必要があります。そうしないと、引数はオプションとしてマークされません(すでにオプションの引数が前に付いている場合でも)。

function demo(
  /** @type {String} */ mandatory,
  /** @type {Number} */ optional1 = 0,
  /** @type {Number} optional2 = undefined,
)

あなたが上にマウスを移動した場合demo、あなたのIDEには、両方が表示されるはずですoptional1し、optional2今、オプションとして表示します。?引数名の後に示されるVSCode (TypeScript表記)。あなたがあなた= undefinedから削除したoptional2場合optional1、もちろんナンセンスであるオプションのみが表示されますので、ここでのデフォルト値は、上の段落で言及したように明示的でなければなりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.