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

如何使用JSDoc定义可递归嵌套的对象结构?

解决JSDoc递归嵌套对象类型的文档编写问题

你不需要定义类,用JSDoc的@typedef就能轻松实现递归类型的文档标注,具体步骤如下:

  1. 先通过@typedef定义递归类型
    先用@typedef声明你的对象类型,在类型内部可以直接引用自身来实现嵌套结构:

    /**
     * @typedef Person
     * @type {object}
     * @property {string} firstName - 人员的名
     * @property {string} lastName - 人员的姓
     * @property {Person[]} children - 嵌套的子级人员数组
     */
    
  2. 在函数参数中引用该类型
    定义好类型后,直接在@param里使用这个类型名即可:

    /**
     * 处理嵌套人员数据的函数
     * @param {Person} person - 任意深度嵌套的人员对象
     */
    function handlePerson(person) {
        // 函数逻辑
    }
    

为什么你之前的写法不生效?

你直接在对象字面量类型中引用person时,这个名称还未被定义,JSDoc无法识别。而通过@typedef提前声明类型后,类型名就可以在自身的属性定义中递归引用,完美适配任意深度的嵌套结构。

适配你实际场景的修改

针对你实际的嵌套项目符号文本对象,只需要修改@typedef的名称和属性字段即可,比如:

/**
 * @typedef BulletItem
 * @type {object}
 * @property {string} text - 项目符号文本内容
 * @property {BulletItem[]} subItems - 嵌套的子项目数组
 */

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:32:06