Annotating "zero or more parameters with any type" for Google Closure Compiler

I have a function that is the same as jQuery.noop

, angular.noop

and goog.nullFunction

: it does nothing and returns undefined, but it is convenient to look at callback(successFn || noop);

.

It can be called with any number of arguments (0 or more) of any type.

Here's how I have it now:

/**
 * @param varArgs {...*}
 */
var noop = function(varArgs) {};

      

Problem: When called with no arguments, the Google Closure compiler gives me this:

Function noop: called with 0 argument(s). 
Function requires at least 1 argument(s) and no more than 1 argument(s).

      

The funny thing is that goog.nullFunction is annotated for Closure Compiler, but its annotation is also wrong, it throws errors when it called one or more arguments:

Function noop: called with 1 argument(s).
Function requires at least 0 argument(s) and no more than 0 argument(s).

      

Question: How can I annotate the function correctly noop

?

+3


source to share


1 answer


From the documentation, the syntax is:

/**
 * @param {...*} varArgs
 */

      



You first enter the type of the variable and then the name. After the test, your example gives an error, but when using the correct ordering it is not.

+5


source







All Articles