Javascript 闭包编译器的Regexp类型

Javascript 闭包编译器的Regexp类型,javascript,regex,types,google-closure-compiler,jsdoc,Javascript,Regex,Types,Google Closure Compiler,Jsdoc,我目前正在向personnal javascript模块添加类型注释,但在尝试键入以regexp作为参数的函数时遇到了问题,但以下尝试均无效: /** @type {function(RegExp)} */ /** @type {function(regex)} */ 我只得到: WARNING - Bad type annotation. Unknown type regexp 我应该在声明中使用什么类型?谢谢。根据,JSDoc中没有单独的regexp类型,regexp本身有类型“obje

我目前正在向personnal javascript模块添加类型注释,但在尝试键入以regexp作为参数的函数时遇到了问题,但以下尝试均无效:

/** @type {function(RegExp)} */
/** @type {function(regex)} */
我只得到:

WARNING - Bad type annotation. Unknown type regexp

我应该在声明中使用什么类型?谢谢。

根据,JSDoc中没有单独的regexp类型,regexp本身有类型“object”。如果希望使注释更具可读性和意义,可以使用
@typedef
将“regexp”别名为“object”。如果实际添加了此类型,它还将允许在将来快速调整-您只需要删除或更改别名。

外部中的
RegExp
对象被注释为。下面是一个接受
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];
};
默认外部变量 闭包编译器包括es3.js、es5.js和es6.js等。 这些外部文件通常不需要显式指定,除非设置了以下标志:

——仅使用自定义外部设置=true

@exclude\u default\u externs true

排除默认值\u外部值=true

附加外部人员
默认情况下不包括的其他外部程序在下可用。这些外部代码可能是用
--externs
标志指定的。

是的,我看到了这个页面,但我希望它只是未记录的:-/第一个注释
@type{function(RegExp)}
应该可以工作。我在下面发布的示例都通过使用带有详细警告的来检查是否正确。听起来您缺少外部人员。你是如何运行编译器的?谢谢,你的回答让我走上了正确的轨道,我只需要添加一个--externs es3.js来进行更好的类型检查