2014-10-02 67 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);