用于变量参数的Google Closure Compiler @param注释

时间:2017-08-03 03:43:08

标签: javascript annotations google-closure-compiler jsdoc

我有一个可以接受可变数量参数的函数。

根据Google Closure Compiler wiki,这是使用@param注释执行此操作的方法。

/**
 * Takes 2 or more strings and do something cool with them.
 * @param {...string} var_args
 * @return {string} the processed result
 */
function doSomethingCool() {
    var len = arguments.length;
    if (len < 2) {
        throw Error('Need at least 2 arguments');
    }

    ...
}

问题

当我尝试编译时,我会看到此警告:JSC_INEXISTENT_PARAM: parameter var_args does not appear in doSomethingCool's parameter list at line 6 character 1

所以我尝试@param {string} arguments,但同样的错误。

我也试过没有变量名的@param {string}。我得到了:JSC_TYPE_PARSE_ERROR: Bad type annotation. expecting a variable name in a @param tag.

问题

我做错了什么以及如何为Closure Compiler注释变量参数?

1 个答案:

答案 0 :(得分:2)

您的var_args需要实际出现在参数列表中,这是错误告诉您的内容。

/**
 * Takes 2 or more strings and do something cool with them.
 * @param {...string} var_args
 * @return {string} the processed result
 */
function doSomethingCool(var_args) {}

Closure-compiler将识别它从未被引用并在编译期间将其删除。

如果让它列在那里困扰你,你可以改为使用@type注释:

/**
 * Takes 2 or more strings and do something cool with them.
 * @type {function(...string):string}
 */
function doSomethingCool() {}

如果您真的想要正确的类型检查,请注释该函数,使其需要2个或更多字符串:

/**
 * Takes 2 or more strings and do something cool with them.
 * @type {function(string, string, ...string):string}
 */
function doSomethingCool() {}