所有
我对打字稿很新,当谈到界面的概念时,我遇到的第一个例子就是按类实现:
interface ITax {
taxpayerId: string;
calculateTax(): number;
}
class IncomeTax implements ITax {
taxpayerId: string;
calculateTax(): number {
return 10000;
}
}
我想知道每个班级是否需要重新申请成员纳税人,为什么我们需要在界面中定义它(这真的让我感到困惑,与JAVA相比,我也发现一些帖子不会重新声明界面中的成员,但在我的情况下:Sublime + typescript,我得到错误说如果我没有在课堂上声明该成员,则VATP中的类型缺少taxpayerId
由于
答案 0 :(得分:1)
在实现接口和继承(或扩展)类之间,TypeScript(和其他语言)有所区别。与C#一样,TypeScript中的接口纯粹是抽象的,没有与之相关的实现。因此,实现该接口的类需要提供它们自己的实现,无论是字段还是方法,都没有区别。但是,如果他们扩展基类,他们不会:他们可以覆盖基本实现,当然(不需要virtual
关键字,因为有效的一切都是虚拟的) ,但他们不需要。
现在,Typescript支持抽象类,你也可以像这样实现它:
abstract class Tax {
taxpayerId: string;
abstract calculateTax(): number;
}
class IncomeTax extends Tax {
calculateTax(): number {
return 10000;
}
}