簡體   English   中英

用於閉包編譯器的Regexp類型

[英]Regexp type for closure compiler

我目前正在為個人javascript模塊添加類型注釋,但是當我嘗試鍵入函數時,我正在考慮將regexp作為參數,但以下嘗試都沒有工作:

/** @type {function(RegExp)} */
/** @type {function(regex)} */

我只是得到:

WARNING - Bad type annotation. Unknown type regexp

我應該在聲明中使用什么類型? 謝謝。

RegExp對象在extern es3.js中Closure Compiler注釋。 這是一個接受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包含默認的externs,例如es3.js,es5.js和es6.js. 除非設置了以下標志,否則通常不需要顯式指定這些外部文件

閉包編譯器應用程序 :-- --use_only_custom_externs=true

Closure Compiler Service UI@exclude_default_externs true

Closure Compiler Service APIexclude_default_externs=true

額外的外部人員

contrib / externs下還有其他外部功能 ,默認情況下不包含這些外部功能 可以使用--externs標志指定這些外部。

根據GCC的類型列表, JSDoc中沒有單獨的正則表達式類型 ,正則表達式本身具有類型“對象”。 如果您希望使注釋更具可讀性和意義,可以使用@typedef將“regexp”別名為“object”。 如果實際添加了此類型,它還可以在將來快速適應 - 您只需要刪除或更改別名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM