[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
위 예제에서 Circle
과 Rectangle
클래스가 모두 Shape
인터페이스를 구현함으로써, 코드의 확장성을 높일 수 있습니다.
이렇듯, 상속과 구현을 통해 TypeScript 코드를 보다 모듈화하고 유지보수성을 높일 수 있습니다.
자료 참조: TypeScript 공식 문서