我在param回调中使用WARNING - could not determine the type of this expression
时收到.apply
。让我举例说明一下。我有这段代码:
/**
* @param {function(... [*])} callback
* @param {string} name
*/
function call(callback, name) {
return callback.apply(null, [name]);
// ^- error here.
}
在我的代码中,我需要在.apply
上设置callback
并获取它返回的内容。但Closure Compiler给我错误。我需要使用java -jar compiler.jar --js test.js --js_output_file test.min.js --warning_level VERBOSE --jscom_warning reportUnknownTypes
运行它。
请注意,我强制警告所有未知类型,但callback
类型为function(... [*])
,并且它具有正确的.apply
方法(由于您的类型,在CC内部定义)。如果我运行代码,它在浏览器上完美运行。
可能是Closure Compiler的错误吗?
我尝试过的事情
@param {*} callback
:错误; @param {function(*)} callback
:错误; return /** @type {function(... [*])} */ (callback).apply(null, [name]);
:错误; return (/** @type {function(... [*])} */ (callback)).apply(null, [name]);
:错误; 答案 0 :(得分:1)
根据Concavel,在Closure Compiler问题跟踪器的issue #1191上,到@param
回调,您需要指定回调返回如下:
/** @param {function(*): number} callback */
它真的解决了这个问题。