Javascript TypeScript编译错误-无法为“调用”表达式选择重载-RegExp.test

Javascript TypeScript编译错误-无法为“调用”表达式选择重载-RegExp.test,javascript,typescript,Javascript,Typescript,这是我在编译小型Regexp匹配代码时遇到的wierd错误- 代码- var regExp = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term), "i"); response($.grep(modelState.Options, function (item) { return regExp.test(item); })); 当我看到这个接口RegExp的typescript定义时 我可以看到那里的测试方法- t

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

代码-

var regExp = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term), "i");
response($.grep(modelState.Options, function (item) {
    return regExp.test(item);
}));
当我看到这个接口RegExp的typescript定义时

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

test(string: string): boolean;
谁能建议我解决这个错误吗-
TypeScript编译错误-无法为“call”表达式选择重载

我已在TypeScript上创建了此简化示例:

function example(item) {
    var regExp = /[0-9]/;
    return regExp.test(item);
}
由于无法推断项,因此它具有任意类型。游乐场接受正则表达式测试方法的任何类型的参数都没有问题

这意味着您可以使用以下命令调用示例函数:

example({ this: 'works'});
允许任何类型的调用都没有意义,因此通过注释参数,可以防止此类事故:

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

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

编译器无法猜测项的类型?用item替换functionitem:string=>Yeah用-var str=item+修复了它;返回regExp.teststr;