当前位置: 首页 > 知识库问答 >
问题:

在TypeScript中扩展和实现纯抽象类

燕烨
2023-03-14
abstract class A {
    abstract m(): void;
}
class B extends A {
    m(): void { }
}
class C implements A {
    m(): void { }
}

BC的行为有何不同?我为什么要选择其中一个?

(目前,TypeScript手册和语言规范不包括抽象类。)

共有1个答案

王才英
2023-03-14

implements关键字将A类视为接口,这意味着C必须实现A中定义的所有方法,无论它们是否在A中有实现。

extends的行为更像是您对关键字的期望。您必须只实现抽象方法,并且超级调用可用/生成。

我想在抽象方法的情况下,这并没有什么不同。但是你很少拥有一个只有抽象方法的类,如果你这样做了,把它转换成一个接口会好得多。

 类似资料:
  • 我有一个节点。js应用程序,将一些配置信息附加到对象: TypeScript 编译器不喜欢这样,因为 类型没有名为 的对象: TS2339:类型“Global”上不存在属性“myConfig”。 我不想这样做: 我如何扩展< code>Global类型以包含< code>myConfig或者只是告诉TypeScript闭嘴并相信我?我更喜欢第一个。 我不想更改中的声明。我看到了这篇SO帖子,并尝试

  • 问题内容: 我有一个node.js应用程序,该应用程序将一些配置信息附加到该对象: TypeScript编译器不喜欢这样,因为该类型没有名为的对象: TS2339:类型“ Global”上不存在属性“ myConfig”。 我不想这样做: 如何扩展类型以包含或只是告诉TypeScript关闭并信任我?我希望第一个。 我不想更改其中的声明。我看到了这样的帖子,并尝试了这个: 作为扩展现有接口的一种方

  • 本文向大家介绍C#扩展抽象基类,包括了C#扩展抽象基类的使用技巧和注意事项,需要的朋友参考一下 示例 与接口(可以描述为实现合同)不同,抽象类充当扩展的合同。 抽象类无法实例化,必须对其进行扩展,然后可以实例化生成的类(或派生类)。 抽象类用于提供通用实现 上面的示例显示了实现Car的任何扩展类如何自动接收HonkHorn方法。这意味着任何开发新汽车的开发人员都无需担心它将如何鸣笛。

  • 问题内容: 谁能告诉我完全抽象的类和接口之间到底有什么区别? Abstract类也可以将其所有方法都作为abstract。接口的所有方法均为抽象。在这种情况下,两者之间的主要区别是什么? 纯抽象类和接口之间是否有区别?接口有什么用?在使用接口的地方,我们可以使用纯抽象类吗? 问题答案: 要完成以前的答案: 接口是一个“合同”。如果一个类实现一个接口,则它必须提议该接口中列出的所有服务。 抽象类是骨