[typescript] 클래스 상속과 인터페이스 구현을 사용하여 다형성을 구현하는 방법은?

다형성은 객체지향 프로그래밍에서 매우 중요한 개념입니다. TypeScript에서는 클래스 상속과 인터페이스 구현을 통해 다형성을 구현할 수 있습니다. 이를 통해 한 가지 타입으로 여러 가지 형식의 데이터를 다룰 수 있으며, 코드의 재사용성과 유지보수성을 향상시킬 수 있습니다.

클래스 상속을 사용한 다형성 구현

클래스 상속을 활용하여 다형성을 구현하는 방법은 아래와 같습니다.

class Animal {
    name: string;
    constructor(name: string) {
        this.name = name;
    }
    makeSound() {
        return 'Some sound';
    }
}

class Dog extends Animal {
    makeSound() {
        return 'Woof! Woof!';
    }
}

class Cat extends Animal {
    makeSound() {
        return 'Meow! Meow!';
    }
}

let myDog: Animal = new Dog('Bobby');
let myCat: Animal = new Cat('Tom');
console.log(myDog.makeSound()); // 출력: Woof! Woof!
console.log(myCat.makeSound()); // 출력: Meow! Meow!

위 예제에서는 Animal 클래스를 상속받은 DogCat 클래스에서 makeSound 메서드를 오버라이딩하여 다형성을 구현했습니다.

인터페이스 구현을 사용한 다형성 구현

인터페이스를 사용하여 다형성을 구현하는 방법은 아래와 같습니다.

interface Shape {
    draw(): string;
}

class Circle implements Shape {
    draw() {
        return 'Circle is drawn';
    }
}

class Rectangle implements Shape {
    draw() {
        return 'Rectangle is drawn';
    }
}

let circle: Shape = new Circle();
let rectangle: Shape = new Rectangle();
console.log(circle.draw()); // 출력: Circle is drawn
console.log(rectangle.draw()); // 출력: Rectangle is drawn

인터페이스를 구현한 CircleRectangle 클래스에서 각각 draw 메서드를 구현하여 다형성을 실현했습니다.

다형성은 프로그램의 유연성을 높이고, 코드의 재사용성을 높여줌으로써 프로그래밍의 효율성을 증대시킵니다.

위 내용을 통해 TypeScript에서 클래스 상속과 인터페이스 구현을 사용하여 다형성을 구현하는 방법에 대해 배워보았습니다. 다형성을 통해 코드를 더 유연하고 유지보수하기 쉽게 작성할 수 있습니다.