2014-10-02 48 views
3

我想记录一个枚举这样的:不能记录枚举

/** 
* 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)

回答

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标签...

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

+0

为了以防万一... https://github.com/jsdoc3/jsdoc/issues/777 – danikaze 2015-07-22 15:31:50

3

这是一个非常古老的问题,但答案仍然可能会有所帮助。 由于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);