[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
는 추상 클래스로, Circle
과 Square
클래스에서 상속받아 calculateArea
메소드를 구현하고 있습니다.
추상 클래스의 장점
- 공통 로직의 추출: 다양한 클래스들이 공통으로 가지는 로직을 한 곳에 모아 유지보수성을 높일 수 있습니다.
- 인터페이스의 확장: 추상 클래스는 구현된 메소드를 가질 수 있어, 인터페이스의 확장과 구체화 과정에서 유용하게 활용될 수 있습니다.
TypeScript에서 추상 클래스를 적절히 활용하여 코드의 재사용성과 확장성을 높일 수 있습니다.
참고 자료: TypeScript Handbook - Abstract Classes