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

使用DocDash+JSDoc时@typedef未显示在目录的问题求助

解决JSDoc+DocDash中Typedef未显示在目录及无法搜索的问题

一、修正代码注释与常量的关联

当前代码中@typedef和导出的常量是分开定义的,JSDoc无法将二者正确关联,导致Typedef的元数据不完整。修改注释,将Typedef与常量绑定:

/**
 * ActivityOptions 配置项类型定义
 * @typedef {object} module:CardSession.ActivityOptions
 * @property {boolean} quiz 开启测验模式
 * @property {boolean} canSkip 允许跳过内容
 * @property {boolean} repeat 允许重复操作
 * @property {number} timeLimit 时间限制(百分比)
 * @property {number} questionLimit 题目数量限制
 * @property {PassingProps} passingProps 通关所需属性
 * @property {string[]} prereq 前置条件ID列表
 * @property {string[]} completion 完成条件ID列表
 * @property {EnumActivityRules} rules 活动规则枚举
 */

/**
 * ActivityOptions的JSON Schema校验规则
 * @type {module:CardSession.ActivityOptions}
 * @memberof module:CardSession
 */
export const ActivityOptions = {
    type: 'object',
    properties: {
        quiz: {type: 'boolean'},
        canSkip: {type: 'boolean'},
        repeat: {type: 'boolean'},
        timeLimit: {type:'number'},
        questionLimit: {type: 'number'},
        passingProps: PassingProps,
        prereq: {
            type: 'array',
            items: {type: 'string'} // 修正JSON Schema规范:用items替代members
        },
        completion: {
            type: 'array',
            items: {type: 'string'}
        },
        rules: EnumActivityRules
    },
    required: ['quiz','canSkip','repeat','passingProps','prereq','completion','rules'],
    additionalProperties: false
};

二、调整DocDash配置显示Typedefs目录

原配置的sectionOrder中没有包含Typedefs,导致目录里不会单独列出该板块。更新jsdoc.json的DocDash配置:

{
    "docdash": {
        "static": true,
        "sort": true,
        "sectionOrder": [
            "Classes",
            "Tutorials",
            "Modules",
            "Typedefs", // 新增该行,将Typedefs加入顶部目录
            "Externals",
            "Events",
            "Namespaces",
            "Mixins",
            "Interfaces"
        ],
        "disqus": "musicards.io",
        "search": true,
        "commonNav": false,
        "collapse": true,
        "wrap": false,
        "typedefs": true,
        "navLevel": 1,
        "private": true,
        "removeQuotes": "none",
        "scripts": [],
        "ShortenTypes": false,
        "scopeInOutputPath": true,
        "nameInOutputPath": true,
        "versionInOutputPath": true
  }
}

三、确保Typedef可被搜索

按照以下步骤排查搜索问题:

  • 确保@typedef添加了明确的描述文本,帮助JSDoc生成可搜索的元数据
  • 检查@memberof的模块路径是否正确(如module:CardSession),避免拼写错误
  • 重新生成文档前删除旧的输出目录,清除缓存后再运行JSDoc命令

四、调整模块内Typedef的排序

若Typedef在模块详情页中仍排在函数之后,可:

  • 确保sort: true已开启,JSDoc会按名称首字母自动排序
  • 若需要强制Typedef排在最前,可修改DocDash模板的排序逻辑(需自定义模板文件)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 03:05:25