[typescript] 추상 클래스와 인터페이스의 차이점

TypeScript에서 추상 클래스인터페이스는 유사해 보이지만, 목적과 사용 방법에는 몇 가지 중요한 차이가 있습니다.

추상 클래스

추상 클래스는 abstract 키워드를 사용하여 정의됩니다. 이 클래스는 반드시 하나 이상의 추상 메서드를 포함해야 합니다. 추상 메서드란 본문이 없는 메서드이며, 서브클래스에서 반드시 구현되어야 합니다. 또한 일반적인 메서드나 속성을 포함할 수 있습니다. 추상 클래스는 하나의 클래스만 상속할 수 있습니다.

abstract class Animal {
  abstract makeSound(): void;
  move(): void {
    console.log("roaming the earth");
  }
}

인터페이스

인터페이스는 클래스, 함수 및 다른 구조체에 타입을 지정하는 역할을 합니다. 인터페이스는 구현을 포함할 수 없으며 클래스의 기능을 정의하거나 확장할 수 없습니다. 인터페이스는 다중 상속이 가능합니다.

interface Animal {
  makeSound(): void;
}

class Dog implements Animal {
  makeSound() {
    console.log("Woof");
  }
}

결론

추상 클래스는 상속과 구현을 위한 것이며, 인터페이스는 타입 체크를 위한 것입니다. 따라서 특정한 사용 목적에 따라 적합한 것을 선택해야 합니다.

자세한 내용은 TypeScript 공식 문서를 참고하시기 바랍니다.

TypeScript 공식 문서