JSDocの列挙型を使用することは可能ですか@param
次の例のような型宣言ですか?
/**
* @enum { Number }
*/
var TYPES = {
TYPE_A: 1,
TYPE_B: 2
}
/**
* @param { TYPES } type
*/
function useTypesEnum( type ) {
}
JavaScriptにEclipseなどのIDEを使用している場合、警告は発生しませんか?
JsDocコメントはJavaScriptコードに影響を与えません。それが影響するのは、その情報を使用するように設計されたいくつかのツールです。 JsDocコメントを操作する2つのツールは documentation generator とGoogle Closure Compilerです。
@enumタグが追加されたJsDoc3には特に詳しくありませんが、他のタイプと同じように機能すると思います。
Closure Compilerはenumも正しく認識し、例で述べたようにそれを使用して、コンパイラーのすべての利点を得ることができます(型チェックなど)。
これは警告なしにすべてを文書化する正しい方法だと思われます
/**
* @typedef {number} MyType
**/
/**
* @enum {MyType}
*/
var TYPES = {
TYPE_A: 1,
TYPE_B: 2
}
/**
* @param {MyType} type
*/
function useTypesEnum( type ) {
}
これの意味は:
Intellij 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"
*/