我正在尝试在Typescript中创建一个自定义验证器类:
abstract class ValidatorBase<T>
{
protected abstract Rules: Rule[];
public Validate(t: T): string[]
{
return this.Rules.filter(rule => rule.Test(t)).map(rule => rule.ErrorMsg);
}
}
export class Rule
{
public Test: Map<any, boolean>;
public ErrorMsg: string;
}
但是,“rule.Test(t)”给了我一个编译器错误:
“无法调用类型缺少调用签名的表达式。键入 '地图
<any, boolean
&GT;'没有兼容的呼叫签名。“
我已经在这个论坛上看到了一些关于这个问题的问题,比如this one:
但我的问题似乎有所不同,因为没有涉及接口或继承。
这个错误背后的原因是什么?是否有可能解决它?
答案 0 :(得分:2)
rule.Test
是Map
,它不是函数。
您的意思是rule.Test.get(t)
吗?
查看Map
的定义:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map