[typescript] 추상 클래스를 사용하여 객체의 상속과 타입 제한하기

추상 클래스는 TypeScript에서 객체를 상속하고 타입을 제한하는 데 유용한 도구입니다. 추상 클래스는 직접적으로 객체를 생성할 수 없고, 대신에 다른 클래스에서 확장하여 사용합니다. 또한, 추상 클래스는 메서드와 속성의 구현을 강제화함으로써 일관된 동작을 보장합니다.

추상 클래스 선언하기

추상 클래스는 abstract 키워드를 사용하여 선언됩니다. 메서드나 속성 앞에 abstract 키워드를 붙이면, 해당 메서드나 속성을 반드시 하위 클래스에서 구현해야 합니다.

abstract class Animal {
  abstract makeSound(): void;
}

위의 예제에서 Animal 클래스는 추상 메서드 makeSound를 가지고 있습니다. 이 메서드는 하위 클래스에서 반드시 구현되어야 합니다.

추상 클래스 상속하기

하위 클래스에서 추상 클래스를 상속하고 추상 메서드를 구현함으로써 해당 메서드의 동작을 정의할 수 있습니다.

class Dog extends Animal {
  makeSound() {
    console.log("멍멍");
  }
}

위의 예제에서 Dog 클래스는 Animal 클래스를 상속하고 makeSound 메서드를 구현하여 “멍멍”을 출력합니다.

추상 클래스를 이용한 타입 제한

추상 클래스를 사용하여 타입을 제한함으로써 특정 형태의 객체만을 허용하는 기능을 구현할 수 있습니다.

function makeAnimalSound(animal: Animal) {
  animal.makeSound();
}

const dog = new Dog();
makeAnimalSound(dog); // output: "멍멍"

위의 예제에서 makeAnimalSound 함수는 Animal 타입의 매개변수를 받아들입니다. 이를 통해 Dog 클래스의 객체를 전달하더라도 해당 객체가 Animal 클래스를 상속받았으므로 함수를 호출할 수 있습니다.

결론

추상 클래스를 사용하면 객체의 상속과 타입을 효과적으로 제한할 수 있습니다. 이를 통해 안정적이고 일관된 코드 구조를 유지하고 다양한 객체를 처리하는 유연성을 확보할 수 있습니다.

더 많은 정보를 원하시면 TypeScript 공식 문서를 참고하시기 바랍니다.