如何在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
相关产品推荐
相关产品推荐

