【问题标题】:How to indicate param is optional using inline JSDoc?如何使用内联 JSDoc 指示参数是可选的?
【发布时间】:2011-08-17 22:50:36
【问题描述】:

根据@param 的 JSDoc wiki,您可以使用

指示 @param 是可选的
/**
    @param {String} [name]
*/
function getPerson(name) {
}

您可以使用 inline 指定参数

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

我可以像下面这样组合它们,效果很好。

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

但我想知道是否有办法在可能的情况下内联。

【问题讨论】:

    标签: javascript google-closure-compiler jsdoc


    【解决方案1】:

    我找到了一种使用 Google Closure Compiler type expressions 的方法。你在类型后面加上一个等号,如下所示: function test(/**String=*/arg) {}

    【讨论】:

    • WebStorm /IntellIDEA 支持这种表示法
    • @PeterAronZentai,我将添加 WebStorm/IntelliIDEA 支持它,因为我提出了一个功能请求:)。它们现在支持大多数 Google Closure Compiler 类型表达式,这非常棒。
    • 对于可选的第二个参数不适合我。
    • @studgeek 真棒!
    【解决方案2】:

    经过一番挖掘,我发现这些也可以

    /**
     * @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) {}更具视觉吸引力

    【讨论】:

    • 这些是有效的(并记录在 JSDoc 帮助中),但它们不是 inline - 这正是我所寻找的。​​span>
    • 问题是关于内联 JSDoc 表示法。这是有趣的信息,但没有回答问题
    【解决方案3】:

    来自official documentation

    可选参数

    一个名为 foo 的可选参数。

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

    一个可选参数 foo,默认值为 1。

    @param {number} [foo=1]
    

    【讨论】:

    • 我在问如何内联。您提供的示例似乎与我在问题中显示的相同。
    【解决方案4】:

    如果您在函数参数上使用内联类型 cmets,并且想知道如何在该表示法中将函数参数标记为可选,我发现只需为可选参数分配默认值即可。如果您希望默认为undefined,您也必须明确设置它,否则该参数将不会被标记为可选(即使它前面已经有可选参数):

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

    如果您在 IDE 中将鼠标悬停在 demo 上,您应该会看到 optional1optional2 现在显示为可选。在参数名称后由? 指示的 VSCode(TypeScript 表示法)。如果你从optional2 中删除= undefined,你会看到只有optional1 是可选的,这当然是无稽之谈,所以这里的默认值必须是明确的,就像我在上一段中提到的那样。

    【讨论】:

      猜你喜欢
      • 2019-10-19
      • 2019-07-18
      • 2013-08-11
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      相关资源
      最近更新 更多