202

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

2 Answers 2

333

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
 */
Sign up to request clarification or add additional context in comments.

10 Comments

The . notation is now deprecated and its support should be dropped later. Current correct version is {Array<Object>}. Just to keep this post up to date.
With JSDoc 3, how would you doc an array of String arrays? In the old syntax I might do something like Array.<string[]>
@Kenny806 Deprecated? A reference document please?
@Wilt: the JSDoc documentation is contradictory about the dot before angle brackets.
This answer doesn't explain how to declare the keys of the objects in that array, and how to declare an array of objects with specific keys as a return type. This answer does.
|
1

I would like to add to Rene Saarsoo's answer that worked for me.

To list each object attribute for a list of those objects in a function parameter the following worked for me and validated with eslint.

https://jsdoc.app/tags-param#parameters-with-properties

Use {Object[]} for the array

Use {string} employees[].name for each attribute of the object in the array

/**
 * Assign the project to a list of employees.
 * @param {Object[]} employees - The employees who are responsible for the project.
 * @param {string} employees[].name - The name of an employee.
 * @param {string} employees[].department - The employee's department.
 */
 Project.prototype.assign = function(employees) {
   // ...
 };

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.