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

前端 - 1、我们如何知道如何选择使用接口还是抽象类? 2、有了interface,还有abstract class 存在的必要吗? 3、我们使用interface好还是选择abstract class好?

郭志
2023-06-29

typescript 中,我们可以用class 实现接口(interface),也可以用class 扩展抽象类(abstract class),

但是:
1、我们如何知道如何选择使用接口还是抽象类?
2、有了interface,还有abstract class 存在的必要吗?
3、我们使用interface好还是选择abstract class好?

共有1个答案

荆煌
2023-06-29
  • 接口没有具体实现、只有成员签名;抽象类可以有具体实现。
  • 接口没有构造函数;抽象类可以有构造函数。
  • 接口成员只能是 public 的;抽象类成员可以是 public/protected/private 的。
  • 接口可以 extends 多个;抽象类只能 implements 一个。
  • interface 编译成 JS 后就没有了;abstract class 编译后就是 JS 里的 class。

区别的话大概就这些。

你要是真·OOP 开发,编译后你希望在 JS 里也保留 class(比如你是开发一个库,别人引用后也能 new 对象出来的),那就用 abstract class。

不过绝大部分情况下,我们用 TypeScript 仅仅是为了类型声明、从而带来更好的 IDE 智能提示,这种情况下 interface+type 可以满足 99% 的场景了。

 类似资料:
  • 本文向大家介绍如何选择是使用webpack还是rollup?相关面试题,主要包含被问及如何选择是使用webpack还是rollup?时的应答技巧和注意事项,需要的朋友参考一下 如何选择是使用webpack还是rollup? #2073 #2082

  • 问题内容: 看完Joshua Bloch的演讲“ Performance Anxiety”后,我阅读了他在演讲“ Evaluation of Java Profillers的准确性”中建议的论文。引用结论: 我们的结果令人不安,因为它们表明配置文件不正确是普遍存在的-在我们的七个基准测试中的大多数以及两个生产JVM中(而且很重要),所有四个最新的配置文件都产生不正确的配置文件。不正确的配置文件很容

  • 看过前面的文章,也许有许多朋友已经跃跃欲试想将自己主板上的BIOS升级了(有这种便宜,能不动心吗?)。别心急,我们先来看看升级BIOS的进行过程。首先,你必须知道自己的主板型号;其次,要确认主板上的BIOS的类型和版本;第三,到主板生产商的网页上去下载同自己主板型号和BIOS类型一致的BIOS升级程序;最后,进行BIOS升级操作。在这里,我们先介绍前两个步骤的实现方法。 如何查知电脑的主板类型?

  • 早在使用 Docker 之前就听说与其前辈 Vagrant 之前的竞争与替代,但是一直没能够 真正认识到两者之间的区别和优缺点,这次腾出时间使用 Vagrant 终于对它们之间的优缺点 有了更深的认识。 埋头苦干一直不是我的风格,所以在比较 Vagrant 安装、下载期间细细阅读了多篇相关文章, 其中当然少不了 Vagrant 和 Docker 作者在 StackOverflow 上的亲自解惑(中

  • 问题内容: 我正在尝试设置禁用输入的样式。我可以用: 要么 属性选择器是现代CSS3方式还是前进的方式?我曾经使用伪类,但是找不到关于它们是否是旧方法并且将不被支持或者它们是否相等的任何信息,您可以使用最喜欢的任何方法。 我不需要支持较旧的浏览器(这是一个Intranet应用程序),因此: 属性是更新更好的 伪类仍然是要走的路 无论您最喜欢哪个 有一个技术上的理由要使用另一个 问题答案: 属性选择

  • 问题内容: 我试图在网上找到答案,但是找不到特定于实现的答案。 我可以选择,并进行了大量的业务,我想知道我怎么可以在它们之间进行选择? 我已阅读文档的onComplete和的onSuccess,但我可以从火力地堡文档,看这一个,例如,对于(如一个具体操作的示例操作),他们有时用,有时他们使用。 我怎么知道每种情况下哪个更好?有关系吗?考虑到我想知道每个操作是否成功。 问题答案: 顾名思义,将在任务