Javascript 在JSDoc中枚举为@param类型

Javascript 在JSDoc中枚举为@param类型,javascript,ide,jsdoc,jsdoc3,Javascript,Ide,Jsdoc,Jsdoc3,是否可以像下面的示例中那样为JSDoc@param类型声明使用枚举 /** * @enum { Number } */ var TYPES = { TYPE_A: 1, TYPE_B: 2 } /** * @param { TYPES } type */ function useTypesEnum( type ) { } 如果我对JavaScript使用Eclipse等IDE,应该不会发出警告吗?JsDoc注释对JavaScript代码没有影响。它所影响的是一些设计

是否可以像下面的示例中那样为JSDoc
@param
类型声明使用枚举

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

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

}

如果我对JavaScript使用Eclipse等IDE,应该不会发出警告吗?

JsDoc注释对JavaScript代码没有影响。它所影响的是一些设计用来使用这些信息的工具。处理JsDoc注释的两个工具是和googleclosure编译器

我对JsDoc3不是特别熟悉,在JsDoc3中添加了@enum标记,但我认为它与任何其他类型一样工作


闭包编译器还可以正确识别枚举,您可以像示例中提到的那样使用它,并获得编译器的所有好处(例如:类型检查)。

因此,这似乎是在没有任何警告的情况下记录所有内容的正确方法

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


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

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

}
这意味着:

  • MyType是一个数字
  • 类型是保存MyType值的枚举
  • 此函数接受输出MyType值的枚举
在intellij 2017.1上为我工作

但是-这仍然允许在没有警告的情况下将每个字符串传递给函数

如果还要指定枚举值-因此如果使用了其他字符串,则会引发错误,请使用中描述的方法:


通过这样做,您可以实现以下目标:

/**
* @param {(1|2)} type
*/
function useTypesEnum(type) {

}

你试过了吗?发生了什么事?是的,但只是在一个小时内。如果我对
@param
使用
TYPESSS
,它也能工作。你解决过这个问题吗?不,它不会创建指向该枚举的链接,只创建指向typedefs的链接。我不知道请求者如何推断注释会影响代码,相反,他们想知道如何影响IDE的类型提示逻辑。他们似乎要求的是在jsdoc中识别枚举是否可行,如果可能,语法是什么,而您的答案似乎对此没有帮助。我承认他们的问题本来可以说得更好。非常感谢,这是我一直在寻找的答案,应该是被接受的答案。我无法告诉你你是如何度过我的一天的,Leuan!这能与
@typedef
结合吗?@jakubiszon,是的。只需将(1 | 2)替换为您的自定义type@AhmedMahmoud我能看看这个例子吗?当我引用它时,VSCode似乎没有拾取它,但它不建议值。
/**
* @param {(1|2)} type
*/
function useTypesEnum(type) {

}