如何在JSDoc中记录字典?

Áxe*_*ena 55 javascript dictionary jsdoc

有下一个例子:

var CONF = {
    locale: {
        "en": {
            name: "English",
            lang: "en-US"
        },
        "es": {
            name: "Spanish",
            lang: "es-ES"
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

并且知道locale属性包含的是来自数据库的字典对象,如何使用JSDoc记录其内部属性?

目前我正在考虑typedef 为我的语言环境对象输入,那么我可以将该locale属性设置为我定义的类型的数组吗?这是正确的方法吗?

Áxe*_*ena 88

根据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"
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

清洁,使用 @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"
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

  • @MinhNghĩa 这是一个花括号内的对象。 (2认同)
  • 知道如何将“Object.&lt;string, locale&gt;”中“string”的名称从“x”更改为其他名称吗? (2认同)