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

JavascriptDocumentationJsdoc

Javascript Problem Overview


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...
 }

Javascript Solutions


Solution 1 - Javascript

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
 */

Solution 2 - Javascript

If your function returns an object with 2 specific values, you can document it like this:

/**
 * @returns {[string, number]}
 */
function myFunc () {
    return ["test", 3.14]
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRayView Question on Stackoverflow
Solution 1 - JavascriptRene SaarsooView Answer on Stackoverflow
Solution 2 - JavascriptJames BondView Answer on Stackoverflow