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

如何在JSDoc @typedef定义的Object类型中添加任意额外属性

JSDoc 实现对象类型支持任意额外属性的方案

你要的效果和TypeScript索引签名完全对等,JSDoc有两种常用实现方式,都能保留foo、bar的固定类型提示,同时支持添加任意属性:

  • 写法1:通过@property声明索引签名,可读性更强
/**
 * Lorem ipsum dolor...
 * @typedef {Object} NotificationOptions
 * @property {boolean} foo - 属性1
 * @property {boolean} bar - 属性2
 * @property {*} [key: string] - 任意额外属性,类型无限制
 */

说明:这里的*代表任意类型,如果需要限定额外属性的类型,比如仅允许字符串值,将*替换为string即可。

  • 写法2:内联类型声明,写法更紧凑
/**
 * Lorem ipsum dolor...
 * @typedef {{
 *  foo: boolean,
 *  bar: boolean,
 *  [key: string]: any
 * }} NotificationOptions
 */

两种写法在VSCode、开启checkJs的TypeScript校验场景下都完全兼容,和你给出的TypeScript接口类型提示效果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:06:07