3

我已经阅读了这个问题的一堆答案,并且自己也尝试了一些不同的变体,但到目前为止,我还没有找到任何让 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 是否可以毫无怨言地接受这种语法的任何形式,或者这只是一个错误/缺失的功能?

4

1 回答 1

0

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

于 2013-09-24T12:56:23.680 回答