[typescript] 추상 클래스를 사용하여 다른 클래스간의 공통 로직을 추출하기

TypeScript는 JavaScript에 타입을 더해 타입 안정성을 제공하는 프로그래밍 언어입니다. 이번에는 TypeScript에서 추상 클래스를 사용하여 다른 클래스 간의 공통 로직을 추출하는 방법에 대해 알아보겠습니다.

추상 클래스란?

추상 클래스는 다른 클래스들이 공통으로 가지는 속성과 메소드를 추상화하여 정의한 클래스입니다. 이 클래스는 직접 인스턴스를 생성할 수 없고, 다른 클래스가 이 클래스를 상속받아 구체적인 내용을 구현하도록 하는데 주 목적이 있습니다.

추상 클래스의 활용

예를 들어, 다양한 타입의 도형을 다루는 프로그램을 작성한다고 가정해봅시다. 각 도형 클래스는 넓이를 계산하는 메소드를 가지고 있지만, 각각의 도형마다 구체적인 방법으로 넓이를 계산합니다.

abstract class Shape {
  abstract calculateArea(): number;
}

class Circle extends Shape {
  radius: number;
  constructor(radius: number) {
    super();
    this.radius = radius;
  }
  calculateArea(): number {
    return Math.PI * this.radius ** 2;
  }
}

class Square extends Shape {
  sideLength: number;
  constructor(sideLength: number) {
    super();
    this.sideLength = sideLength;
  }
  calculateArea(): number {
    return this.sideLength * this.sideLength;
  }
}

위 예제에서 Shape는 추상 클래스로, CircleSquare 클래스에서 상속받아 calculateArea 메소드를 구현하고 있습니다.

추상 클래스의 장점

TypeScript에서 추상 클래스를 적절히 활용하여 코드의 재사용성과 확장성을 높일 수 있습니다.

참고 자료: TypeScript Handbook - Abstract Classes