Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to specify an array of objects as a parameter or return value in JSDoc?

In JSDoc, the best documentation I can find shows to use the following if you have an array of a specific type (such as an array of strings) as:

/**
 * @param {Array.<string>} myStrings All my awesome strings
 */
 function blah(myStrings){
     //stuff here...
 }

How would you replace the below question marks specify an array of objects?

/**
 * @param {???????} myObjects All of my equally awesome objects
 */
 function blah(myObjects){
     //stuff here...
 }
like image 457
Ray Avatar asked Oct 06 '22 21:10

Ray


People also ask

How do you define an array of objects in TypeScript?

To declare an array of objects in TypeScript, set the type of the variable to {}[] , e.g. const arr: { name: string; age: number }[] = [] . Once the type is set, the array can only contain objects that conform to the specified type, otherwise the type checker throws an error. Copied!

What is the Jsdoc keyword to specify an argument to a function?

The @param tag provides the name, type, and description of a function parameter. The @param tag requires you to specify the name of the parameter you are documenting.

How do you select an array in JavaScript?

We can use the following ways to select a random element from an array in JavaScript: Math. random() , array. length , and Math.

Which is the correct way to create an array in JavaScript I?

Using an array literal is the easiest way to create a JavaScript Array. Syntax: const array_name = [item1, item2, ...]; It is a common practice to declare arrays with the const keyword.


1 Answers

You should be more specific what you mean by JSDoc - this is a generic term covering pretty much all the JavaDoc-style documentation tools for JavaScript.

The syntax you used for array of strings looks like the one supported by Google Closure Compiler.

Using this, an array of Objects would be:

/**
 * @param {Array.<Object>} myObjects
 */

Or just an array of anything - this should work with pretty much all doc tools:

/**
 * @param {Array} myArray
 */

jsdoc-toolkit, JSDoc 3, and JSDuck support the following syntax to denote an array of objects:

/**
 * @param {Object[]} myArray
 */

EDIT

In case you know the keys and the variable type of the values you can also do:

/**
 * @param {Array.<{myNumber: Number, myString: String, myArray: Array}>} myObjects
 */

or

/**
 * @param {{myNumber: Number, myString: String, myArray: Array}[]} myObjects
 */
like image 74
Rene Saarsoo Avatar answered Oct 08 '22 17:10

Rene Saarsoo