以下示例中的编译器投诉:
function test() {
var regex = /.+/ig;
''.replace(regex, function (matched, p1) { return ''; });
}
这是TypeScript中的错误吗?
答案 0 :(得分:2)
所以这里是您尝试匹配的lib.d.ts的声明行:
replace(searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string;
在编译时,我们不知道replaceValue函数可能需要处理多少匹配。可能有0个匹配,因此您的函数需要说它可以处理它。在这里重写:
''.replace(regex, function (matched: string, p1?: string) { return ''; });
如果p1
输入为可选,则编译器满意,我们可以处理这种情况。如果没有指定类型,也无法指定参数是可选的,所以我也是这样做的。