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

如何为QuickJS导出的无JSDoc原生类编写JSDoc注释?

为QuickJS导出的C++原生类编写JSDoc注释

由于QuickJS导出的原生类本身不携带类型信息,你需要在JavaScript代码中通过JSDoc补充类的属性、方法定义,让编辑器能识别类型并提供智能提示。以下是两种实用的实现方式:

方式一:在导入语句旁直接声明

在导入代码上方,用JSDoc的@class、@property、@method等标签直接描述原生类的结构:

/**
 * @module libSomeAwesomeCode.so
 */

/**
 * C++实现的原生核心类,提供XX功能
 * @class NativeClass
 * @property {string} instanceName - 实例名称,只读属性
 * @property {number} statusCode - 当前状态码,可读写
 */
/**
 * 执行核心业务操作
 * @method NativeClass#runTask
 * @param {string} taskId - 任务ID
 * @param {Object} config - 任务配置
 * @param {boolean} config.enableLog - 是否开启日志
 * @returns {Promise<{success: boolean, data: any}>} 返回异步操作结果
 */
/**
 * 创建实例的静态工厂方法
 * @method NativeClass.create
 * @param {number} initValue - 初始化参数
 * @returns {NativeClass} 返回新的类实例
 */
import {NativeClass} from "libSomeAwesomeCode.so";

这样编写后,编辑器就能识别NativeClass的类型、属性和方法,在使用时给出准确的代码提示。

方式二:单独创建统一声明文件

如果多个JS文件都需要导入这个原生类,可以创建一个单独的声明文件来统一维护类型信息,比如libSomeAwesomeCode.d.js:

/**
 * @module libSomeAwesomeCode.so
 */

/**
 * C++原生导出的核心类
 * @class NativeClass
 */
export class NativeClass {
    /**
     * 实例唯一标识
     * @type {string}
     * @readonly
     */
    uuid;

    /**
     * 当前运行计数
     * @type {number}
     */
    runCount;

    /**
     * 构造函数(仅当原生类支持通过new实例化时声明)
     * @param {string} initUuid - 初始化UUID
     */
    constructor(initUuid) {}

    /**
     * 重置实例状态
     * @param {boolean} clearData - 是否清空关联数据
     * @returns {void}
     */
    reset(clearData) {}

    /**
     * 静态初始化方法
     * @param {Object} options - 全局配置
     * @param {number} options.timeout - 超时时间(毫秒)
     * @returns {void}
     */
    static setup(options) {}
}

之后在需要导入的文件中,通过引用声明文件来关联类型:

/// <reference path="./libSomeAwesomeCode.d.js" />
import {NativeClass} from "libSomeAwesomeCode.so";

关键注意事项

  • 若原生方法是异步的,用@returns {Promise<Type>}标注返回值类型
  • 只读属性添加@readonly标签,避免编辑器提示可修改
  • 如果原生类不支持new实例化(仅能通过静态方法创建),可省略constructor声明

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 22:11:06