【问题标题】:Proper JSDoc annotations in WebStorm for functions with variable number of arguments?WebStorm 中为具有可变数量参数的函数提供正确的 JSDoc 注释?
【发布时间】:2013-09-29 16:30:36
【问题描述】:

我已经阅读了很多关于这个问题的答案,并且我自己也尝试了一些不同的变体,但到目前为止我还没有找到任何让 WebStorm 满意的东西。有问题的代码如下所示:

var slice = Array.prototype.slice;

/**
 * @param {function} func The original function.
 * @param {...*} args Bound argument values.
 * @returns {function} The partially applied function
 */
function partial(func /* args */) {
    var args = slice.call(arguments, 1);
    return function() {
        return func.apply(this, args.concat(slice.call(arguments)));
    };
}

上面的代码触发警告说“JSDoc中描述的参数args没有出现在函数签名中”。在 WebStorm 内部,它们有一些类似注释的 JS 文件,以支持诸如 Function.prototype.call 之类的自动完成,但这些仅用作库。因此,他们可以在他们的签名中包含任何内容,因此他们只需为此添加一个额外的参数(在这种情况下将是“args”)。不过,在常规代码中,这并不是一个真正的选择。

WebStorm 是否可以毫无怨言地接受这种语法的任何形式,或者这只是一个错误/缺失的功能?

【问题讨论】:

  • 请注意,Google Closure 编译器 (closure-compiler.appspot.com/home) 也不接受此 JSDoc:JSC_INEXISTANT_PARAM:参数 args 不会出现在第 7 行字符的部分参数列表中 0 function partial(func) { 所以这看起来不是 WebStorm 中的错误

标签: javascript webstorm jshint jsdoc


【解决方案1】:

如果我从 Michael Bollin 的书中没记错的话,您仍然需要将第二个参数添加到函数签名中,即使您将通过 JavaScript 特殊的类似数组的参数对象(适用于每个函数)访问额外的参数,而不是您在签名中指定的。

【讨论】:

  • 不幸的是,您有 JSHint 抱怨一个已定义但未使用的变量。我想您可以添加评论来禁止该警告,但我希望有更好的方法。
  • 我明白了...看起来添加抑制警告评论可能是最干净/不那么丑陋的方法。
猜你喜欢
  • 1970-01-01
  • 2013-08-25
  • 2021-12-06
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 2015-01-18
相关资源
最近更新 更多