这是我在编译小型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'表达式选择重载”
答案 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);
}
传递对象的上一个调用现在将突出显示为不正确。