【问题标题】:VS Code - how to document an object using JSDocVS Code - 如何使用 JSDoc 记录对象
【发布时间】:2017-11-20 17:48:48
【问题描述】:

我有一个变量storage,它存储Person 类型的所有元素。所以基本上它是一个带有键 URL 和值 PersonInstance 的字典:

let storage = {}
storage["localhost.com/person/1"] = new Person("John Wick");

其实我可以写:

/** 
 * @type {Object.<string, Person>}
 */

但是 VS Code Intellisense 在这种情况下不起作用。是否有其他方法可以在 VS Code 中使用无限数量的键来记录此类对象?

【问题讨论】:

    标签: javascript visual-studio-code intellisense jsdoc


    【解决方案1】:

    VScode 的 javascript intellisense 由 TypeScript 提供支持,遗憾的是目前不支持 Object.&lt;string, Person&gt; 类型语法。 Here's the bug tracking this.

    您可以通过使用地图的打字稿语法来解决此问题:

    /**
     * @type {{ [key: string]: Person }}
     */
    const storage = {}
    

    这将改善 vscode 中的智能感知,但不是标准或广泛支持的 jsdoc 类型。

    【讨论】:

    • 这正是我想要的。谢谢!
    【解决方案2】:

    添加了对Object&lt;string, T&gt; 的缺失支持。但是,请注意大小写很重要!

    作品

    Object&lt;string, T&gt; 其中 string 是索引,T 是值类型。

    不起作用

    object&lt;string, T&gt; - 对象必须以大写开头:Object

    Object&lt;String, T&gt; - 字符串必须全部小写:字符串

    【讨论】:

      【解决方案3】:

      我发现最好使用Map 而不是对象。所以基本上你可以写这样的东西

          /**
           * @type {Map<string, Person>}
           */
          let bsStorage = new Map();
      

      注意:如果您担心不支持 ES6 的旧版浏览器,您可以使用 Babel 进行转译。

      【讨论】:

        猜你喜欢
        • 2019-04-06
        • 1970-01-01
        • 1970-01-01
        • 2021-12-31
        • 2015-11-24
        • 2017-12-10
        • 2018-03-08
        • 2018-02-01
        • 2021-05-04
        相关资源
        最近更新 更多