Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在TypeScript中使用'string.replace(regex:RegExp,map:'match,…args:any[])=>;字符串):string`_Regex_Typescript - Fatal编程技术网

无法在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的字符串。