无法记录枚举

时间:2014-10-02 16:39:57

标签: javascript jsdoc

我试图记录这样的枚举:

/**
 * Enum for the different types of tokens
 * @memberof Ecre
 * @enum {number}
 * @readonly
 */
Ecre.TokenTypes = Object.freeze({
    /**
     * A string token
     */
    "string": 1,
    "comment": 2,
    "number": 3,
    "boolean": 4,
    "identifier": 5
});

但是这并不像例外那样有效:string是一个全球性的文件。

如何以正确的方式记录值?

我正在使用JSDoc 3.3.0-alpha9(星期六,2014年6月28日15:26:03 GMT)

2 个答案:

答案 0 :(得分:4)

这是一个很老的问题,但答案仍然有用。 由于 Object.freeze 冻结了对象,因此可以在定义枚举后调用它。

/**
 * Enum for the different types of tokens
 * @memberof Ecre
 * @enum {number}
 * @readonly
 */
Ecre.TokenTypes = {
    "string": 1,
    "comment": 2,
    "number": 3,
    "boolean": 4,
    "identifier": 5
};
Object.freeze(Ecre.TokenTypes);

答案 1 :(得分:0)

这就是我在我的代码中完成它的方式,它有效......

/**
 * Enum: Alignment values
 *
 * @property {Number} Bottom
 * @property {Number} BottomLeft
 * @property {Number} BottomRight
 * @property {Number} Center
 * @property {Number} Left
 * @property {Number} Right
 * @property {Number} Top
 * @property {Number} TopLeft
 * @property {Number} TopRight
 *
 * @enum {Number}
 * @readOnly
 * @memberOf gc
 */
var Align = Object.freeze({
    Bottom      : 0,
    BottomLeft  : 1,
    BottomRight : 2,
    Center      : 3,
    Left        : 4,
    Right       : 5,
    Top         : 6,
    TopLeft     : 7,
    TopRight    : 8
});

gc.Align = Align;

问题是,使用Object.freeze使用jsdoc不会自动解析枚举,但是在您喜欢的文本编辑器中使用简单的宏,可以轻松生成@property标记...

不是最佳选择,但至少生成的文档是相同的