[typescript] 상속과 구현을 통해 어떤 코드의 재사용성을 높일 수 있는가?

이 글에서는 TypeScript에서 상속과 구현을 통해 코드의 재사용성을 높이는 방법에 대해 알아보겠습니다.

상속 (Inheritance)

상속은 부모 클래스가 가지고 있는 속성과 메서드를 자식 클래스가 물려받아 사용할 수 있는 기능을 말합니다. 이를 통해 부모 클래스의 기능을 재사용할 수 있습니다. TypeScript에서는 extends 키워드를 사용하여 클래스 간에 상속 관계를 설정할 수 있습니다.

예를 들어, 다음은 부모 클래스 Animal과 이를 상속받는 자식 클래스 Dog의 예시입니다:

class Animal {
  sound: string;

  constructor(sound: string) {
    this.sound = sound;
  }

  makeSound() {
    console.log(this.sound);
  }
}

class Dog extends Animal {
  breed: string;

  constructor(sound: string, breed: string) {
    super(sound);
    this.breed = breed;
  }

  bark() {
    console.log('Woof!');
  }
}

const myDog = new Dog('Bark', 'Labrador');
myDog.makeSound(); // Output: Bark
myDog.bark(); // Output: Woof!

위 예시에서 Dog 클래스는 Animal 클래스를 상속받아 makeSound 메서드를 재사용하고 있습니다.

구현 (Implementation)

인터페이스를 사용하여 클래스 간에 공통된 동작을 추상화하여 특정 동작을 강제할 수 있습니다. 인터페이스를 구현함으로써 여러 클래스 간에 공통된 메서드 또는 속성을 적용할 수 있습니다.

interface Printable {
  print(): void;
}

class Document implements Printable {
  content: string;

  constructor(content: string) {
    this.content = content;
  }

  print() {
    console.log(this.content);
  }
}

class Report implements Printable {
  title: string;
  content: string;

  constructor(title: string, content: string) {
    this.title = title;
    this.content = content;
  }

  print() {
    console.log(`${this.title}: ${this.content}`);
  }
}

const doc = new Document('Sample document content');
doc.print(); // Output: Sample document content

const report = new Report('Monthly Report', 'Lorem ipsum...');
report.print(); // Output: Monthly Report: Lorem ipsum...

위 예시에서 DocumentReport 클래스는 print 메서드를 구현하여 인터페이스의 재사용성을 높이고 있습니다.

결론

TypeScript에서 상속과 구현을 통해 코드의 재사용성을 높일 수 있습니다. 상속을 사용하여 부모 클래스의 기능을 자식 클래스에서 재사용하고, 인터페이스를 통해 클래스 간에 공통된 동작을 추상화하여 재사용성을 높일 수 있습니다.

참고 자료: