无法在TypeScript中使用'string.replace(regex:RegExp,map:'match,…args:any[])=>;字符串):string`
编译器将在以下示例中显示:无法在TypeScript中使用'string.replace(regex:RegExp,map:'match,…args:any[])=>;字符串):string`,regex,typescript,Regex,Typescript,编译器将在以下示例中显示: function test() { var regex = /.+/ig; ''.replace(regex, function (matched, p1) { return ''; }); } 这是打字脚本中的错误吗 下面是lib.d.ts中您试图匹配的声明行: replace(searchValue: RegExp, replaceValue: (substring: string, ...args: any[])
function test() {
var regex = /.+/ig;
''.replace(regex, function (matched, p1) { return ''; });
}
这是打字脚本中的错误吗
下面是lib.d.ts中您试图匹配的声明行:
replace(searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string;
在编译时,我们不知道replaceValue函数可能需要处理多少个匹配项。可能有0个匹配项,因此您的函数需要说明它可以处理该匹配项。在这里,它被改写了:
''.replace(regex, function (matched: string, p1?: string) { return ''; });
如果将
p1
类型化为可选,编译器会满意地认为我们可以处理这种情况。在不指定类型的情况下,无法指定参数可以是可选的,所以我也这样做了。注意,您也可以像这样向p1添加“…”:var r=/asdf/g“”。替换(r,函数(匹配,…p1){return“”;});错误消息针对的是参数1,而不是参数2。在这种情况下,String.prototype.replace似乎只接受参数1的字符串。