Skip to content
JSDoc Basic

JSDoc 基础语法与通用用法

JSDoc 是 JavaScript 的注释标准,能为代码提供类型提示、文档生成和开发辅助。KubeJS/ProbeJS 项目中,JSDoc 注释配合类型文件可极大提升开发体验。

常用标签与用法

  • @type:变量类型
  • @param:函数参数类型
  • @returns:返回值类型
  • @typedef:自定义类型
  • @template:泛型
  • @this:指定 this 上下文
  • @property:对象属性
  • @callback:回调类型
  • @see:文档跳转
  • @enum:枚举类型
  • @deprecated:标记已废弃
  • @example:代码示例
  • @default:默认值
  • @const:常量
  • @readonly:只读属性
  • @module:模块声明
  • @namespace:命名空间
  • @exports:导出
  • @private @protected @public:访问修饰符
  • @ignore:忽略文档
  • @inheritdoc @override:继承/重写 - 不支持
  • @augments @mixes:继承/混入 - 不支持
  • @fires @event:事件 - 不支持
  • @yields @async:生成器/异步 - 不支持
  • @throws:抛出异常
  • @summary @description:摘要/描述
  • @author @version @since @license @todo:元信息

变量类型注释

js
/** @type {number} */
let count = 0;
js
/** @type {Internal.LivingEntity} */
let living = event.entity;

函数参数与返回值注释

js
/**
 * @param {string} id
 * @returns {number}
 */
function getIdLength(id) {
  return id.length;
}
js
/**
 * @param {Internal.ItemBuilder} item
 * @returns {void}
 */
function setupItem(item) {
  item.maxStackSize(16);
}

对象与属性注释

js
/**
 * @typedef {Object} MyData
 * @property {string} name
 * @property {number} value
 */
js
/**
 * @typedef {Object} CustomItem
 * @property {string} id
 * @property {number} power
 */

枚举与常量

js
/**
 * @enum {number}
 */
const Direction = {
  Up: 0,
  Down: 1
};
js
/** @const {number} */
const MAX_COUNT = 100;

只读与默认值

js
/** @readonly */
let version = '1.0.0';
js
/**
 * @param {string} [name="Steve"]
 */
function hello(name) {}

模块与命名空间

js
/** @module MyModule */
js
/** @namespace MyNamespace */

访问修饰符与导出

js
/** @private */
function _internal() {}
js
/** @exports MyExport */

抛出异常与生成器

js
/**
 * @throws {Error} Something went wrong
 */
function mayThrow() {}
js
/**
 * @yields {number}
 */
function* gen() { yield 1; }

示例、描述与元信息

js
/**
 * @example
 * hello('Steve');
 */
function hello(name) {}
js
/**
 * @summary 简要说明
 * @description 详细描述
 * @author Crychic
 * @version 1.0.0
 * @since 2024-01-01
 * @license MIT
 * @todo 优化实现
 */

其他标签与特殊用法

js
/** @ignore */
js
/** @deprecated 请使用 newMethod 替代 */
function oldMethod() {}