我目前正在向个人 javascript 模块添加类型注释,但我目前在尝试输入以正则表达式作为参数的函数时遇到困难,但以下尝试均无效:
/** @type {function(RegExp)} */
/** @type {function(regex)} */
我只得到:
WARNING - Bad type annotation. Unknown type regexp
我应该在声明中使用什么类型?谢谢。
我目前正在向个人 javascript 模块添加类型注释,但我目前在尝试输入以正则表达式作为参数的函数时遇到困难,但以下尝试均无效:
/** @type {function(RegExp)} */
/** @type {function(regex)} */
我只得到:
WARNING - Bad type annotation. Unknown type regexp
我应该在声明中使用什么类型?谢谢。
该RegExp
对象在 extern es3.js中为闭包编译器注解。这是一个接受对象的示例函数。RegExp
/**
* @param {RegExp} regex A regular expression object.
* @param {string} text Text to match.
* @return {string} The first match in text.
*/
var firstMatch = function(regex, text) {
var match = regex.exec(text);
return match[1];
};
var text = 'Where art thou?';
var regex = new RegExp('^\\W*(\\w+)\\b', 'g');
var firstWord = firstMatch(regex, text);
alert(firstWord); // displays "Where"
使用 注释的相同函数@type
:
/** @type {function(RegExp, string): string} */
var firstMatch = function(regex, text) {
var match = regex.exec(text);
return match[1];
};
Closure Compiler 包含默认的 extern ,例如 es3.js、es5.js 和 es6.js。 这些外部文件通常不需要明确指定,除非设置了以下标志:
闭包编译器应用程序:--use_only_custom_externs=true
闭包编译器服务 UI:@exclude_default_externs true
闭包编译器服务 API:exclude_default_externs=true
contrib/externs下还有其他可用的externs ,默认情况下不包括在内。这些外部可以用--externs
标志指定。
根据GCC 的类型列表, JSDoc 中没有单独的正则表达式类型,并且正则表达式本身具有“对象”类型。@typedef
如果你想让你的注释更具可读性和意义,你可以使用别名“regexp”到“object”。如果实际添加了这种类型,它还将允许在未来快速适应 - 您只需要删除或更改别名。