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

VS Code - how to document an object using 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 中使用无限数量的键来记录此类对象?

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

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

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

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

我发现用 Map 代替 object 更好。所以基本上你可以这样写

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

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

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

有效

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

不起作用

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

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