TypeScript编译错误 - 无法为' call'选择过载表达式 - RegExp.test

时间:2014-07-04 06:05:27

标签: javascript typescript

这是我在编译小型Regexp匹配代码时遇到的错误 -

代码 -

var regExp = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term), "i");
response($.grep(modelState.Options, function (item) {
    return regExp.test(item);
}));

当我看到这个“界面RegExp”

的打字稿定义时

我可以看到那里的测试方法 -

test(string: string): boolean;

任何人都可以建议我解决这个错误 - “TypeScript编译错误 - 无法为'call'表达式选择重载”

1 个答案:

答案 0 :(得分:0)

我在TypeScript Playground上创建了这个简化的例子:

function example(item) {
    var regExp = /[0-9]/;
    return regExp.test(item);
}

由于无法推断item,因此它具有any类型。 Playground在正则表达式测试方法中接受any类型的参数没有问题。

这意味着您可以使用以下内容调用example函数:

example({ this: 'works'});

允许使用字面上任何类型的调用都没有意义,因此通过注释参数可以防止此类事故:

function example(item: string) {
    var regExp = /[0-9]/;
    return regExp.test(item);
}

传递对象的上一个调用现在将突出显示为不正确。