Ответ 1
Согласно JSDoc 3 документа:
Массивы и объекты (типы приложений и типы записей)
Объект со строковыми ключами и числовыми значениями:
{Object.<string, number>}
Так было бы:
/** @type {{locales: Object.<string, {name: string, lang: string}>}} */
var CONF = {
locales: {
en: {
name: "English",
lang: "en-US"
},
es: {
name: "Spanish",
lang: "es-ES"
}
}
};
Очиститель, используя @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"
}
}
};