[typescript] 상속과 구현을 사용하여 어떤 코드의 모듈화를 할 수 있는가?

TypeScript는 클래스 기반의 객체지향 프로그래밍을 지원하여 코드의 모듈화를 효과적으로 구현할 수 있습니다. 상속과 구현을 사용하여 코드를 모듈화할 때 유용한 방법에 대해 알아봅시다.

상속 (Inheritance)

상속은 부모 클래스의 속성과 메서드를 자식 클래스에서 재사용하는 기능을 제공합니다. 자식 클래스는 부모 클래스의 기능을 확장하거나 수정하여 재사용할 수 있습니다.

class Animal {
  name: string;
  constructor(name: string) {
    this.name = name;
  }
  move(distance: number = 0) {
    console.log(`${this.name}${distance}만큼 움직였습니다.`);
  }
}

class Dog extends Animal {
  bark() {
    console.log('멍멍!');
  }
}

const dog = new Dog('멍멍이');
dog.bark(); // 멍멍!
dog.move(10); // 멍멍이이 10만큼 움직였습니다.

위 예제에서 Dog 클래스는 Animal 클래스를 상속받아 move 메서드를 호출하여 재사용하고, bark 메서드를 추가하여 확장하였습니다.

구현 (Implementation)

인터페이스를 사용하여 클래스가 특정한 속성과 메서드를 구현하도록 강제함으로써 모듈화할 수 있습니다. 이를 통해 코드의 일관성을 유지하고, 재사용성을 높일 수 있습니다.

interface Shape {
  getArea(): number;
}

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

const circle = new Circle(5);
console.log(circle.getArea()); // 78.54

위 예제에서 Circle 클래스는 Shape 인터페이스를 구현하여 getArea 메서드를 갖도록 하여 모듈화하였습니다.

상속과 구현을 적절히 활용하여 TypeScript 코드를 모듈화하면, 코드의 가독성과 유지보수성을 향상시키고, 재사용 가능한 모듈을 구현할 수 있습니다.

이상으로 TypeScript에서 상속과 구현을 사용하여 코드의 모듈화하는 방법에 대해 알아보았습니다. 추가로 궁금한 점이 있다면 언제든지 질문해주세요!