web-dev-qa-db-ja.com

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

@ param のJSDoc wikiによると、@ paramはオプションを使用して指定できます。

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

パラメーターを指定できます inline を使用して

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

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

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

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

101
studgeek

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

47
studgeek

公式ドキュメント から:

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

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

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

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

@param {number} [foo=1]
102
czerny

少し掘り下げた後、これらも大丈夫だとわかりました

_/**
 * @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) {}よりわずかに視覚的に魅力的

60
vvMINOvv

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

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

IDE)でdemoにカーソルを合わせると、optional1optional2の両方がオプションとして表示されるはずです。VSCodeでは、引数名の後の?で示されます(TypeScript表記)。 = undefinedからoptional2を削除すると、optional1のみがオプションになりますが、これは無意味なので、ここでのデフォルト値は、上記の段落で言及したように明示的でなければなりません。

1