如何将带索引签名的TypeScript Payload接口转换为完整JSDoc?
如何在JSDoc中实现TypeScript接口的索引签名(任意字段支持)
你要转换的TypeScript接口里,[key: string]: any;是允许任意字符串键的索引签名,要在JSDoc中实现这个特性,有两种实用写法:
写法一:扩展现有@property声明
直接在你已有的JSDoc注释中添加一行,用[key: string]作为属性名,指定类型为any,就能支持任意字段:
/** * @typedef Payload * @type {Object} * @property {string} [level] 可选的级别字段 * @property {number} [code] 可选的状态码字段 * @property {any} [key: string] 任意字符串键对应的任意类型值 */
写法二:使用交叉类型语法
这种方式更贴近原TypeScript接口的语义,通过Object.<string, any>定义索引签名对象,再和包含具体属性的对象做交叉:
/** * @typedef {Object.<string, any> & { * level?: string; * code?: number; * }} Payload */
两种写法都能让编辑器正确识别Payload类型:既包含level、code这两个可选字段,也允许添加任意字符串键的额外属性。
内容的提问来源于stack exchange,提问作者eliezra236
相关产品推荐
相关产品推荐

