[typescript] 상속과 구현을 사용하여 어떤 코드의 확장성을 높일 수 있는가?

상속 (Inheritance)

상속은 부모 클래스의 속성과 메소드를 자식 클래스에서 재사용할 수 있게 해줍니다. 다음은 상속을 사용한 TypeScript 코드의 예제입니다:

class Animal {
  name: string;
  constructor(name: string) {
    this.name = name;
  }
  move(distance: number = 0) {
    console.log(`${this.name} 이동 거리: ${distance}m`);
  }
}

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

const dog = new Dog('멍멍이');
dog.bark(); // 멍멍!
dog.move(10); // 멍멍이 이동 거리: 10m

위 예제에서 Dog 클래스는 Animal 클래스를 상속받아 move 메소드를 사용할 수 있고, bark 메소드를 추가로 구현함으로써 부모 클래스를 확장하고 있습니다.

구현 (Implementation)

인터페이스를 구현함으로써 TypeScript 코드의 확장성을 높일 수 있습니다. 다음은 구현을 사용한 TypeScript 코드의 예제입니다:

interface Shape {
  area(): number;
}

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

class Rectangle implements Shape {
  constructor(private width: number, private height: number) {}
  area(): number {
    return this.width * this.height;
  }
}

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

const rectangle = new Rectangle(4, 6);
console.log(rectangle.area()); // 24

위 예제에서 CircleRectangle 클래스가 모두 Shape 인터페이스를 구현함으로써, 코드의 확장성을 높일 수 있습니다.

이렇듯, 상속과 구현을 통해 TypeScript 코드를 보다 모듈화하고 유지보수성을 높일 수 있습니다.

자료 참조: TypeScript 공식 문서