[typescript] 타입스크립트에서 추상 클래스와 인터페이스 함께 사용하는 예시

타입스크립트에서 추상 클래스와 인터페이스를 함께 사용하여 코드를 구조화하고 모듈화할 수 있습니다. 추상 클래스는 공통적인 속성과 메서드를 가진 클래스를 정의하고, 인터페이스는 클래스가 구현해야 하는 속성과 메서드의 형태를 정의합니다. 이 두 가지를 함께 사용하여 유연하고 확장 가능한 코드를 작성할 수 있습니다.

추상 클래스와 인터페이스 정의하기

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

interface Pet {
  name: string;
  play(): void;
}

위 예제에서 Animal 클래스는 추상 클래스로 정의되었습니다. makeSound 메서드는 추상 메서드로, 파생 클래스에서 구현해야 합니다. move 메서드는 구현이 이미 되어 있기 때문에 추상 클래스를 상속한 클래스에서 오버라이딩할 필요가 없습니다.

Pet 인터페이스는 name 속성과 play 메서드를 가지고 있습니다.

추상 클래스를 상속하고 인터페이스를 구현하기

class Dog extends Animal implements Pet {
  name: string;

  constructor(name: string) {
    super();
    this.name = name;
  }

  makeSound(): void {
    console.log("woof woof");
  }

  play(): void {
    console.log("fetching the ball");
  }
}

위의 코드에서 Dog 클래스는 Animal 추상 클래스를 상속하고, Pet 인터페이스를 구현하고 있습니다.

이처럼 추상 클래스와 인터페이스를 함께 사용하여 코드를 구조화하면, 코드의 일관성과 유지보수성을 높일 수 있습니다.

이 예시는 타입스크립트 핸드북를 참고하여 작성되었습니다.