[typescript] 상속과 다형성의 활용

자바스크립트에서 타입스크립트로의 전환이라면, 상속과 다형성을 활용하는 것은 매우 중요합니다. 상속을 통해 코드 재사용성을 높이고, 다형성을 이용해 객체 지향적으로 코드를 구조화할 수 있습니다.

상속(Inheritance)의 활용

타입스크립트에서 상속은 extends 키워드를 사용하여 클래스간의 상속을 구현할 수 있습니다. 부모 클래스의 기능을 상속받아 자식 클래스에서 재사용할 수 있으며, 자식 클래스에서 추가적인 기능을 확장할 수 있습니다.

아래는 Animal 클래스를 상속하는 Dog 클래스의 예시입니다.

class Animal {
  public name: string;
  constructor(name: string) {
    this.name = name;
  }
  public move(distance: number = 0) {
    console.log(`${this.name} moved ${distance}m`);
  }
}

class Dog extends Animal {
  public breed: string;
  constructor(name: string, breed: string) {
    super(name);
    this.breed = breed;
  }
  public makeSound() {
    console.log("Woof! Woof!");
  }
}

const dog = new Dog("Buddy", "Labrador");
dog.move(10);
dog.makeSound();

다형성(Polymorphism)의 활용

다형성은 상속 관계에 있는 여러 클래스들이 같은 이름의 메서드를 가지고 있지만 내부 로직이 다르게 동작하도록 하는 것을 말합니다. 이를 통해 코드의 가독성과 확장성을 높일 수 있습니다.

아래는 다형성을 활용한 예시입니다.

class Shape {
  public name: string;
  constructor(name: string) {
    this.name = name;
  }
  public calculateArea(): number {
    return 0;
  }
}

class Circle extends Shape {
  constructor(name: string) {
    super(name);
  }
  public calculateArea(): number {
    // calculate area for circle
  }
}

class Square extends Shape {
  constructor(name: string) {
    super(name);
  }
  public calculateArea(): number {
    // calculate area for square
  }
}

function printArea(shape: Shape) {
  console.log(`Area of ${shape.name}: ${shape.calculateArea()}`);
}

const circle = new Circle("Circle");
const square = new Square("Square");

printArea(circle);
printArea(square);

상속과 다형성을 적절히 활용하면, 객체 지향적인 프로그래밍을 쉽게 구현할 수 있습니다.

이상으로 상속과 다형성의 활용에 대해 알아보았습니다.감사합니다.

참고 자료: