VS Code - 如何使用JSDoc记录对象

时间:2017-06-18 12:14:49

标签: javascript visual-studio-code intellisense jsdoc

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

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

其实我可以这样写:

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

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

3 个答案:

答案 0 :(得分:2)

VScode的javascript intellisense由TypeScript提供支持,不幸的是,它目前不支持Object.<string, Person>类型语法。 Here's the bug tracking this

您可以使用地图的typescript语法解决此问题:

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

这将改进vscode中的intellisense,但不是标准或广泛支持的jsdoc类型。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

已添加对Object<string, T>的缺少支持。但是,请注意大小写很重要!

工程

Object<string, T>,其中string是索引,T是值类型。

不起作用

object<string, T>-对象必须以大写字母开头:对象

Object<String, T>-字符串必须全部小写:字符串