如何在 JSDoc 中引用模块中的常量

chi*_*org 5 javascript module constants node.js jsdoc

我有以下导出常量的模块:

/** @module my_constants */
module.exports = {
    /** @const {number} */
    STATE_FOO: 1,
    /** @const {number} */
    STATE_BAR: 2
}
Run Code Online (Sandbox Code Playgroud)

现在我有另一个模块,其中返回对象可以包含这些常量之一。我怎样才能参考它?

我已经尝试过如下:

/**
 * @typedef {Object} Result
 * @property {string} name
 * @property {my_constants.STATE_FOO|my_constants.STATE_BAR}
 */
Run Code Online (Sandbox Code Playgroud)

在 JSDoc 输出中,常量逐字打印且未链接。有什么方法可以链接到常量或模块吗my_constants?

Har*_*rdy 1

一种选择(我使用过的)是使 typedef 全局化:

/** @module my_constants */

/**
 * @typedef {Object} my_constants
 * @property {number} [STATE_FOO=1]  The foo state
 * @property {number} [STATE_BAR=2]  The bar state
 * @global
 */
module.exports = {
    STATE_FOO: 1,
    STATE_BAR: 2
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用它:

/**
 * @typedef {Object} Result
 * @property {string} name
 * @property {my_constants} some  Some constants
 */
Run Code Online (Sandbox Code Playgroud)

当您创建 jsdoc 时,这将使some参数类型链接到常量类型定义。