@param
是否可以像下面的示例一样对 JSDoc 类型声明使用枚举?
/**
* @enum { Number }
*/
var TYPES = {
TYPE_A: 1,
TYPE_B: 2
}
/**
* @param { TYPES } type
*/
function useTypesEnum( type ) {
}
如果我对 JavaScript 使用 Eclipse 等 IDE,应该不会发出警告?
@param
是否可以像下面的示例一样对 JSDoc 类型声明使用枚举?
/**
* @enum { Number }
*/
var TYPES = {
TYPE_A: 1,
TYPE_B: 2
}
/**
* @param { TYPES } type
*/
function useTypesEnum( type ) {
}
如果我对 JavaScript 使用 Eclipse 等 IDE,应该不会发出警告?
因此,这似乎是在没有任何警告的情况下记录所有内容的正确方法
/**
* @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"
*/
JsDoc 注释对 JavaScript 代码没有影响。它确实影响的是一些旨在使用该信息的工具。使用 JsDoc 注释的两个工具是文档生成器和 Google Closure Compiler。
我对 JsDoc3 不是特别熟悉,其中添加了 @enum 标记,但我认为它与任何其他类型一样工作。
闭包编译器还可以正确识别枚举,您可以像示例中提到的那样使用它并获得编译器的所有好处(例如:类型检查)。