打字稿类型缺少抽象类中的签名调用

时间:2018-01-08 18:48:08

标签: typescript

我正在尝试在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

但我的问题似乎有所不同,因为没有涉及接口或继承。

这个错误背后的原因是什么?是否有可能解决它?

1 个答案:

答案 0 :(得分:2)

rule.TestMap,它不是函数。

您的意思是rule.Test.get(t)吗?

查看Map的定义: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map