首页 > 解决方案 > 对象内的动态键名

问题描述

我正在尝试执行以下操作:我有一个看起来像这样的对象

const object = {
    healthcheck: [
        { method: 'get', name: 'test' }
    ],
    users: [
        { method: 'get', name: 'auth' }
    ],
};

所以我有一个有键的对象,每个键可以是任何字符串,每个键都是一个对象数组,以方法和名称为键。

如何使用 JSDoc 在对象内提供带有动态键的智能感知?

谢谢!

标签: javascriptdocumentationjsdocjsdoc3

解决方案


您可以通过以下语法键入提示动态键:{[key: string]: any},因此在您的情况下,这应该得到您正在寻找的结果:

/**
 * @typedef {{
 *     [key: string]: [{
 *         method: string,
 *         name: string
 *     }]
 * }} MyObject
 */

/**
 * @type {MyObject}
*/
const object = {
    healthcheck: [
        { method: 'get', name: 'test' }
    ],
    users: [
        { method: 'get', name: 'auth' }
    ],
}

typedef 是为了方便在代码的各个地方使用类型,但如果需要智能感知来显示类型的完整形状,可以直接使用类型:

/**
 * @param {{
 *     [key: string]: [{
 *         method: string,
 *         name: string
 *     }]
 * }} routes
 */
const xt = routes => {}

推荐阅读