无法在TypeScript中使用`string.replace(正则表达式:RegExp,map :(匹配,... args:any [])=>字符串):string`

时间:2014-01-13 16:53:52

标签: regex typescript

以下示例中的编译器投诉:

    function test() {
        var regex = /.+/ig;
        ''.replace(regex, function (matched, p1) { return ''; });
    }

这是TypeScript中的错误吗?

enter image description here

1 个答案:

答案 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输入为可选,则编译器满意,我们可以处理这种情况。如果没有指定类型,也无法指定参数是可选的,所以我也是这样做的。