Reputation: 5779
How do I format nested arrays and objects using jsdoc?
This is my best guess:
an_obj = {
username1 : [
{
param1 : "value 1-1-1",
param2 : "value 1-1-2",
optional_nested : "1-1--2"
},
{
param1 : "value 1-2-1",
param2 : "value 1-2-2"
},
],
username2 : [
{
param1 : "value 2-1-1",
param2 : "value 2-1-2"
},
{
param1 : "value 2-2-1",
param2 : "value 2-2-2",
optional_nested : "2-2--2"
}
]
}
}
/**
* A function description.
* @param {Object} obj
* @param {Object} obj.username This is not the object name, but a name type.
* @param {Array} obj.username.array Desc... using [] would conflict with optional params.
* However this could be confused with an object called array.
* @param {String} obj.username.array.param1 Desc... This is the object name rather than a type.
* @param {String} obj.username.array.param2 Desc...
* @param {String} obj.username.array.[optional_param] Desc...
*/
var myFunc = function(obj){
//...
};
myFunc(an_obj);
How do I indicate that an object is indexed by a kind of string?
How do I define a nested array?
Also not sure where to put the square brackets in the optional parameter.
Upvotes: 11
Views: 3756
Reputation: 4259
I'd recommend checking this out. I'd probably write it something like this:
//{Object{username:<Array<Object{param1:String, param2:String,[optional_nest]:string}>>}}
Upvotes: 1
Reputation: 16027
You can try doing it like this : (as specified here http://code.google.com/p/jsdoc-toolkit/wiki/TagParam)
/**
* @param {String[]} obj.username.array
*/
This is supposed to declare obj.username.array
as an array of strings.
Are you using jsdoc or jsdoc3?
Upvotes: 1