如何用JSDoc枚举“枚举”?

时间:2018-06-23 15:05:25

标签: javascript jsdoc jsdoc3

使用Enumify library

我想记录我创建的枚举,例如

import { Enum } from 'enumify';

class CMD extends Enum {};

CMD.initEnum({
  REBOOT: { byte: 0x00 },
  SLEEP:  { byte: 0x01 },
});

export default CMD;

在主线代码中可以这样访问它们:

import CMD from './command';

console.log(CMD.REBOOT);

由于枚举被附加到CMD并在initEnum调用期间创建, 无法将定义嵌入到创建中。

我唯一能解决的方法是提取值, 记录每个const,并使用initEnum中的值:

/** Some doc */
const REBOOT = { byte: 0x00 };

/** More doc */
const SLEEP  = { byte: 0x01 };

CMD.initEnum({
  REBOOT,
  SLEEP,
});

这并不可怕,但是并不能使层次结构清晰,例如CMD.REBOOT 到外面的世界。

使用@name失败,因为我无法在名称中嵌入枚举的“容器” 而不引用它,引号显示在文档中。我也必须用 确实不是这样的东西,因此JSDoc知道如何记录它:

/**
 * @name 'CMD.REBOOT'
 * @global
 */

还有其他选择吗?我只需要在文档中指出它们的存在,最好是低开销,因为 它们通常只是我们根本不在乎的简单值。

1 个答案:

答案 0 :(得分:1)

@lends累了吗?像这样记录静态成员似乎是合法的

CMD.initEnum(/** @lends CMD */{
  REBOOT: { byte: 0x00 },
  SLEEP:  { byte: 0x01 },
});