如何为包含字符串/数字类型键的对象编写简洁有效的JSDoc注释
VSCode的JSDoc能力基于TypeScript类型系统实现,你可以直接使用TS兼容的类型语法,即可解决原写法不识别、类型冗余的问题,有两种常用写法可选:
方案1:索引签名写法
/** * 键为字符串或数字的对象 * @param {{ [key: string | number]: any } & { 'foo': number }} Container */
该写法生成的类型非常简洁,无冗余分支:
type Container = { [key: string | number]: any; } & { 'foo': number; }
方案2:Record泛型写法(更精简)
/** * 键为字符串或数字的对象 * @param {Record<string | number, any> & { 'foo': number }} Container */
效果和索引签名完全一致,代码更短。
原Object.<(string|number), any>写法不生效的原因是:原生JSDoc的Object.<>语法对联合类型作为键的支持,在VSCode的TypeScript校验引擎中兼容度较低,换成上述TS原生支持的语法即可正常识别。
内容的提问来源于stack exchange,提问作者AncientSwordRage
相关产品推荐
相关产品推荐

