是否可以使用enum作为JSDoc @param
类型声明,如下例所示?
/**
* @enum { Number }
*/
var TYPES = {
TYPE_A: 1,
TYPE_B: 2
}
/**
* @param { TYPES } type
*/
function useTypesEnum( type ) {
}
如果我使用像Eclipse等IDE这样的IDE,那么应该不会发出警告吗?
答案 0 :(得分:15)
所以看来这是在没有任何警告的情况下记录所有内容的正确方法
d <- data.frame(days = seq(ymd('2017/1/1'), ymd('2017/2/1'), by = 'days'))
test <- list(
period = list(start = ymd('2017/1/10')
)
)
d %>% filter(days > probe$period$start)
## Here's the error
d %>% filter(days > probe$period['start'])
## This works!
这意味着:
在intellij 2017.1上为我工作
然而 - 这仍然允许每个字符串在没有警告的情况下传递给函数。
如果您还要指定枚举值 - 因此如果使用其他字符串会引发错误,请使用以下所述的方法:https://stackoverflow.com/a/36501659/1068746
/**
* @typedef {number} MyType
**/
/**
* @enum {MyType}
*/
var TYPES = {
TYPE_A: 1,
TYPE_B: 2
}
/**
* @param {MyType} type
*/
function useTypesEnum( type ) {
}
答案 1 :(得分:12)
答案 2 :(得分:3)
JsDoc注释对JavaScript代码没有影响。它影响的是一些旨在使用该信息的工具。使用JsDoc注释的两个工具是the documentation generator和Google Closure Compiler。
我对JsDoc3并不是特别熟悉,其中添加了@enum标签,但我认为它可以像任何其他类型一样工作。
Closure Compiler也正确识别枚举,您可以像在示例中提到的那样使用它,并获得编译器的所有好处(例如:类型检查)。