[英]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.