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

如何用JSDoc为含短横线字段及不可修改对象添加有效注释?

如何用JSDoc为带短横线的字段编写文档?

带短横线的字段(比如"a-b")因为不符合JavaScript标识符规则,在JSDoc里需要特殊处理,这里分享几种靠谱且易被IDE识别的写法:

1. 用@typedef定义结构化类型(推荐)

这是可读性和兼容性最好的方式,把带短横线的字段名用引号包裹即可,还能给字段加说明:

/**
 * @typedef {Object} MyCustomObject
 * @property {number} "a-b" - 存储数值的短横线字段
 */

// 直接引用定义好的类型
/** @type {MyCustomObject} */
let a = {"a-b": 5};

2. 直接在@type中使用带引号的字段

如果只是临时给单个对象加注释,也可以直接在@type的对象类型里包裹字段名,拆成多行更易被IDE识别:

/**
 * @type {{
 *   "a-b": number
 * }}
 */
let a = {"a-b": 5};

3. 用Record工具类型(适合简单键值对)

如果你的对象只有这一个带短横线的字段,用Record可以快速定义类型:

/** @type {Record<"a-b", number>} */
let a = {"a-b": 5};

解决WebStorm提示JSDoc无效的问题

你尝试的/** @type {{"a-b": number}} */写法本身符合JSDoc规范,但旧版本的WebStorm对这种紧凑的带引号对象字面量类型支持不够完善,所以会提示无效。试试下面几种兼容更好的写法:

方案1:@typedef + @property(最稳妥)

这种写法WebStorm识别度最高,还能保留字段说明:

/**
 * @typedef {Object} NumberObject
 * @property {number} "a-b" - 数值字段
 */

/** @type {NumberObject} */
let a = {"a-b": 5};

方案2:拆分多行的对象类型

把@type里的类型拆成多行,WebStorm通常能正确识别:

/**
 * @type {{
 *   "a-b": number
 * }}
 */
let a = {"a-b": 5};

方案3:使用Record类型

这种写法简洁,WebStorm对Record的支持很稳定:

/** @type {Record<"a-b", number>} */
let a = {"a-b": 5};

如果你的WebStorm版本偏旧,建议升级到最新版——新版本对带特殊字符的字段JSDoc支持已经改善很多了。

内容的提问来源于stack exchange,提问作者manuc66

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:10:36