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

TypeScript는 JavaScript에 정적 타입을 지원하므로, 코드의 안정성과 확장성을 높일 수 있습니다. 이는 클래스 상속과 인터페이스 구현을 통해 더욱 강화될 수 있습니다.

클래스 상속을 통한 확장

클래스 상속은 기존 클래스를 기반으로 새로운 클래스를 확장하는 데 사용됩니다. 이를 통해 기존 클래스의 기능을 재사용하고 확장하여 새로운 기능을 추가할 수 있습니다.

다음은 클래스 상속을 사용한 예제 코드입니다.

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 {
  constructor(name: string) {
    super(name);
  }
  public bark() {
    console.log("Woof! Woof!");
  }
}

const dog = new Dog("Bobby");
dog.move(10);
dog.bark();

위 예제에서 Dog 클래스는 Animal 클래스를 상속받아 move 메서드를 사용할 수 있으면서, 새로운 bark 메서드를 추가하여 확장성을 높였습니다.

인터페이스 구현을 통한 확장

인터페이스 구현은 클래스나 객체가 특정 인터페이스의 조건을 충족시키도록 하는 데 사용됩니다. 이를 통해 코드의 유연성을 높일 수 있습니다.

다음은 인터페이스 구현을 사용한 예제 코드입니다.

interface Shape {
  calculateArea(): number;
}

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

const circle = new Circle(10);
console.log(circle.calculateArea());

위 예제에서 Circle 클래스는 Shape 인터페이스를 구현하여 calculateArea 메서드를 제공하고, 이를 통해 코드의 확장성을 높였습니다.

결론

TypeScript에서 클래스 상속과 인터페이스 구현을 활용하면 코드의 확장성을 높일 수 있습니다. 클래스 상속을 통해 기존 기능을 재사용하고 확장하며, 인터페이스 구현을 통해 유연성을 높일 수 있습니다.

이러한 기능들을 적절히 활용하여 TypeScript로 안정적이고 확장성 있는 코드를 작성할 수 있습니다.

참고 문헌:

  1. TypeScript 공식 문서: https://www.typescriptlang.org/docs/
  2. MDN Web Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript