You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为包含字符串/数字类型键的对象编写简洁有效的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:45:05