book icon indicating copy to clipboard operation
book copied to clipboard

interfaceとabstract classの違いを説明しませんか?

Open suin opened this issue 2 years ago • 0 comments

想定質問

interfaceとabstract classの違いは何ですか?

回答

共通点

  • どちらもシグネチャだけを定義でき、子クラスにその実装を強制できる

相違点

  • インターフェイスはコンパイル時に消えるが、抽象クラスは空のclassにコンパイルされて残る
// ts
interface Foo {}
// js

// ts
abstract class Foo {}
// js
class Foo {}
  • この違いにより、抽象クラスはinstanceofのオペランドに用いることができる
// ts
abstract class Animal {}
class Dog extends Animal {}
console.log(new Dog() instanceof Animal); // OK

加筆する場所

https://typescriptbook.jp/reference/object-oriented/class/abstract-class

suin avatar Feb 07 '23 21:02 suin