繁体   English   中英

为什么 VS Code/TypeScript 无法识别 Regex.exec 结果的索引属性?

[英]Why doesn't VS Code/TypeScript recognize the indices property on the result of Regex.exec?

如果您查看此exec文档,它说应该存在一个名为indices的属性:

一个数组,其中每个条目代表一个 substring 匹配项。 每个 substring 匹配本身是一个数组,其中第一个条目代表它的开始索引,第二个条目代表它的结束索引。 indices 数组还有一个 groups 属性,它包含所有命名捕获组的 object。 键是捕获组的名称,每个值是一个数组,第一项是捕获组的开始条目,第二个条目是捕获组的结束索引。 如果正则表达式不包含任何捕获组,则组未定义。

这是我的代码

  const ex = / ([a-z])/dg.exec(
    "a b c d e f"
  );
  if (ex) {
    const x = ex.indices; // Error! Property 'indices' does not exist on type 'RegExpExecArray'.
  }

我有点觉得我错过了一些非常明显的东西。 为什么这不能编译,我如何得到它?

添加.indicies的提案非常新——不到一年前它才进入 TC39 流程的第 4 阶段,而 TypeScript 还没有集成它。 在 TS github 上有一个未解决的问题来添加.indicies ,但尚未修复。

简而言之,如果你想让它正常工作,你必须等到有人将这个新功能贡献给 TypeScript 打字。

当然,您可以自己定义一个类型,并使用as断言:

type RegExpMatchArrayWithIndices = RegExpMatchArray & { indices: Array<[number, number]> };

const ex = / ([a-z])/dg.exec(
    "a b c d e f"
);
if (ex) {
    const x = (ex as RegExpMatchArrayWithIndices).indices;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM