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

JSDoc如何同时为普通参数和未命名解构参数编写规范文档

解决方案

对于这种包含普通参数+未命名可选解构参数的场景,你可以在JSDoc中为解构的外层对象定义一个虚拟参数名(该名称仅用于文档标注,不影响实际代码逻辑),再通过@property声明解构内部的属性即可,同时要注意实际代码中需要给解构参数加默认空对象,避免不传该参数时运行报错。

修改后的完整代码如下:

const EVENT_CONFIG_DEFAULTS = Object.freeze({
    bubbles: true,
    composed: true,
});
/**
 * 所有FW自定义事件的基类
 */
export class FWEvent extends CustomEvent {
    #sourceEvent = null;
    #sourceElement = null;
    /**
     * @param {string} name 事件名称,参考fw-events.js
     * @param {EventInit} eventInit 事件配置
     * @param {Object} [extraOptions] 额外可选配置项
     * @param {Event} [extraOptions.sourceEvent] 可选源事件
     * @param {HTMLElement} [extraOptions.sourceElement] 可选源元素,用于规避事件重定向
     */
    constructor(name, eventInit, { sourceEvent, sourceElement } = {}) {
        super(name, { ...EVENT_CONFIG_DEFAULTS, ...eventInit });

        this.#sourceEvent = sourceEvent || null;
        this.#sourceElement = sourceElement || null;
    }

    get sourceEvent() {
        return this.#sourceEvent;
    }

    get sourceElement() {
        return this.#sourceElement;
    }
}

标注说明

  • 外层的@param {Object} [extraOptions] 声明了第三个参数是可选的对象类型,extraOptions是自定义的虚拟参数名,可替换为任意符合语义的名称
  • 内部属性通过[虚拟参数名.属性名]的格式声明,和普通对象属性的JSDoc标注规则完全一致,主流IDE均可正常识别并给出智能提示
  • 实际代码中补充的= {}默认值是必须的,否则调用时如果不传入第三个参数,JS会尝试对undefined做解构,直接抛出类型错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:09:01