Having next example:
var CONF = {
locale: {
"en": {
name: "English",
lang: "en-US"
},
"es": {
name: "Spanish",
lang: "es-ES"
}
}
};
And knowing that what the locale property contains is a dictionary object, which comes from the database, how can I document its inner properties with JSDoc?
Currently I am thinking to typedef
type for my locale objects, then may I be able to set the locale
property to simply an Array of my defined type? Is this the right way to do it?
According to the JSDoc 3 docs :
Arrays and objects (type applications and record types)
An object with string keys and number values:
{Object.<string, number>}
So it would be:
/** @type {{locales: Object.<string, {name: string, lang: string}>}} */
var CONF = {
locales: {
en: {
name: "English",
lang: "en-US"
},
es: {
name: "Spanish",
lang: "es-ES"
}
}
};
Cleaner, using @typedef
/**
* @typedef {{name: string, lang: string}} locale
*/
/**
* @type {{locales: Object.<string, locale>}}
*/
var CONF = {
locales: {
en: {
name: "English",
lang: "en-US"
},
es: {
name: "Spanish",
lang: "es-ES"
}
}
};
As far as I can tell:
Using @typedef
and @property
to define a custom type is the "correct" way in JSDoc. But it is cumbersome to write and ugly to read (a cardinal sin in documentation).
The record type is much neater (note the double {{
s):
/** {{
name:string,
lang:string
}} */
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.