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

如何用JSDoc注释带属性与带参方法的JavaScript对象?

正确为对象添加JSDoc注释的方法

你之前的写法问题在于,在typedef里把set定义成了普通Function,而且@param没有关联到set方法上,导致编辑器无法识别它是带参数的方法。下面是两种可行的修正方案:

方案一:修正typedef的类型定义(适合需要复用类型的场景)

可以直接在@property里指定方法的完整签名,或者用@callback拆分方法类型,让JSDoc正确识别方法和参数:

写法1:直接指定方法签名

/**
 * 包含属性和set方法的对象类型
 * @typedef {Object} ObjectName
 * @property {number} property - 对象的数值属性
 * @property {(value: number) => void} set - 设置property的方法,接收一个数值参数
 */

/**
 * ObjectName类型的实例
 * @type {ObjectName}
 */
const objectName = {
    property: 0,
    set(value) {
        this.property = value;
    }
};

写法2:用@callback拆分方法类型(更清晰)

/**
 * 设置property的方法类型
 * @callback SetPropertyCallback
 * @param {number} value - 要设置的属性值
 * @returns {void}
 */

/**
 * 包含属性和set方法的对象类型
 * @typedef {Object} ObjectName
 * @property {number} property - 对象的数值属性
 * @property {SetPropertyCallback} set - 设置property的方法
 */

/**
 * ObjectName类型的实例
 * @type {ObjectName}
 */
const objectName = {
    property: 0,
    set(value) {
        this.property = value;
    }
};

方案二:直接在实例方法上添加注释(无需复用类型时用)

如果不需要复用这个对象类型,直接在对象的属性和方法上写JSDoc,编辑器也能正确识别:

const objectName = {
    /**
     * 对象的数值属性
     * @type {number}
     */
    property: 0,

    /**
     * 设置property的数值
     * @param {number} value - 要设置的属性值
     * @returns {void}
     */
    set(value) {
        this.property = value;
    }
};

这样修改后,编辑器就能正确识别set是方法,并显示它的参数信息了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:37:27