我有一个变量 storage ,它存储 Person 类型的所有元素。所以基本上它是一个字典,其中包含 URL 和值 PersonInstance :
let storage = {}
storage["localhost.com/person/1"] = new Person("John Wick");
其实我可以这样写:
/**
* @type {Object.<string, Person>}
*/
但VS Code Intellisense在这种情况下不起作用。是否有其他方法可以在VS Code中使用无限数量的密钥记录此类对象?
答案 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>
-字符串必须全部小写:字符串