2014-02-11 7 views
7

다음 예와 같이 JSDoc @param 유형 선언에 열거 형을 사용할 수 있습니까?JSDoc에서 @param 유형의 열거 형

/** 
* @enum { Number } 
*/ 
var TYPES = { 
    TYPE_A: 1, 
    TYPE_B: 2 
} 

/** 
* @param { TYPES } type 
*/ 
function useTypesEnum(type) { 

} 

JavaScript와 같이 Eclipse 등의 IDE를 사용하면 경고 메시지가 표시되지 않습니까?

+0

를? 어떻게 된 거예요? – Xotic750

+0

예, [jsfiddle] (http://jsfiddle.net/#&togetherjs=fI19CN5hhH)에만 있습니다. '@ param'에'TYPESSS'를 사용하면 작동합니다. –

+0

혹시이 문제를 해결 했습니까? –

답변

3

JsDoc 주석은 JavaScript 코드에 영향을주지 않습니다. 영향을 미치는 부분은 해당 정보를 사용하도록 설계된 도구입니다. JsDoc 주석을 사용하는 도구 중 두 가지는 the documentation generator과 Google Closure Compiler입니다.

@enum 태그가 추가 된 JsDoc3에는별로 익숙하지 않지만 다른 유형과 마찬가지로 작동한다고 가정합니다.

클로저 컴파일러는 열거 형을 올바르게 인식하므로 예제에서 언급 한 것처럼 사용할 수 있으며 컴파일러의 모든 이점 (예 : 유형 검사)을 얻을 수 있습니다.

+0

아니요, 해당 열거 형에 대한 링크를 typedef에만 작성합니다. – xamiro

4

그래서 어떤 경고도없이 모든 것을 문서화하는 올바른 방법 것 같다

/** 
* @typedef {number} MyType 
**/ 


/** 
* @enum {MyType} 
*/ 
var TYPES = { 
    TYPE_A: 1, 
    TYPE_B: 2 
} 

/** 
* @param {MyType} type 
*/ 
function useTypesEnum(type) { 

} 

이 의미 :

  • 합니다 MyType는
  • 유형합니다 MyType는
  • 가치를 보유하고 열거하는 번호입니다
  • 이 함수는 MyType 값을 출력하는 enum을 허용합니다.

Intelli에서 나를 위해 작동합니다. 2017.1

그러나 이것은 각 문자열이 경고없이 함수에 전달되도록 허용합니다.

너무 열거 값을 지정하려면 - 그래서 다른 문자열이 사용 된 경우에서 설명하는 방법을 사용하여 오류를 발생한다 : 당신이 시도 했 https://stackoverflow.com/a/36501659/1068746

/** 
    * @typedef FieldType 
    * @property {string} Text "text" 
    * @property {string} Date "date" 
    * @property {string} DateTime "datetime" 
    * @property {string} Number "number" 
    * @property {string} Currency "currency" 
    * @property {string} CheckBox "checkbox" 
    * @property {string} ComboBox "combobox" 
    * @property {string} Dropdownlist "dropdownlist" 
    * @property {string} Label "label" 
    * @property {string} TextArea "textarea" 
    * @property {string} JsonEditor "jsoneditor" 
    * @property {string} NoteEditor "noteeditor" 
    * @property {string} ScriptEditor "scripteditor" 
    * @property {string} SqlEditor "sqleditor" 
    */