[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...
위 예시에서 Document
와 Report
클래스는 print
메서드를 구현하여 인터페이스의 재사용성을 높이고 있습니다.
결론
TypeScript에서 상속과 구현을 통해 코드의 재사용성을 높일 수 있습니다. 상속을 사용하여 부모 클래스의 기능을 자식 클래스에서 재사용하고, 인터페이스를 통해 클래스 간에 공통된 동작을 추상화하여 재사용성을 높일 수 있습니다.
참고 자료: