【问题标题】:Dynamic key name inside an object对象内的动态键名
【发布时间】:2021-07-17 01:04:28
【问题描述】:

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

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

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

如何使用 JSDoc 在对象内通过动态键提供智能感知?

谢谢! ????

【问题讨论】:

    标签: javascript documentation jsdoc jsdoc3


    【解决方案1】:

    您可以通过以下语法键入提示动态键:{[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 => {}
    

    【讨论】:

    • 嘿,谢谢!但是如果我试图创建一个接受这个 MyObject 的函数。我没有看到任何智能感知,见下图:image.png 它只显示“MyObject”
    • 不!我编辑了答案以添加一个有望做到的替代方案
    • 谢谢!您知道是否有任何方法可以使其自动完成您键入的键?比如@template? ![image.png](postimg.cc/7CSgS3b0)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    相关资源
    最近更新 更多