在Typescript中实现接口的角色

时间:2015-12-03 17:39:16

标签: interface typescript

所有

我对打字稿很新,当谈到界面的概念时,我遇到的第一个例子就是按类实现:

interface ITax {
    taxpayerId: string;
    calculateTax(): number;
}

class IncomeTax implements ITax {
    taxpayerId: string;
    calculateTax(): number {
       return 10000;
    }
}

我想知道每个班级是否需要重新申请成员纳税人,为什么我们需要在界面中定义它(这真的让我感到困惑,与JAVA相比,我也发现一些帖子不会重新声明界面中的成员,但在我的情况下:Sublime + typescript,我得到错误说如果我没有在课堂上声明该成员,则VATP中的类型缺少taxpayerId

由于

1 个答案:

答案 0 :(得分:1)

实现接口和继承(或扩展)类之间,TypeScript(和其他语言)有所区别。与C#一样,TypeScript中的接口纯粹是抽象的,没有与之相关的实现。因此,实现该接口的类需要提供它们自己的实现,无论是字段还是方法,都没有区别。但是,如果他们扩展基类,他们不会:他们可以覆盖基本实现,当然(不需要virtual关键字,因为有效的一切都是虚拟的) ,但他们不需要

现在,Typescript支持抽象类,你也可以像这样实现它:

abstract class Tax {
    taxpayerId: string;
    abstract calculateTax(): number;
}

class IncomeTax extends Tax {
    calculateTax(): number {
        return 10000;
    }
}