[typescript] 타입스크립트 인터페이스를 활용한 다형성 구현

타입스크립트는 정적 타입 언어로, 코드의 안정성과 가독성을 높이는 데 도움을 줍니다. 인터페이스는 타입스크립트에서 추상화를 표현하는 강력한 방법 중 하나입니다. 이번 포스트에서는 타입스크립트 인터페이스를 활용하여 다형성을 구현하는 방법에 대해 알아보겠습니다.

인터페이스란 무엇인가?

타입스크립트에서 인터페이스는 객체의 형태(shape)를 정의하는 역할을 합니다. 다른 언어의 클래스와 유사한 역할을 하지만, 구현을 포함하지 않고 순수하게 형태에 대한 정의만을 포함합니다.

interface Shape {
  name: string;
  color: string;
}

위의 예제에서 Shape 인터페이스는 namecolor라는 속성을 가져야 한다고 정의하고 있습니다.

인터페이스 다형성

타입스크립트 인터페이스를 이용하면 다형성을 구현할 수 있습니다. 이는 어떤 인터페이스에 속한 객체가 여러 형태를 가질 수 있는 능력을 의미합니다. 예를 들어, 동일한 인터페이스를 구현하는 다양한 객체를 다룰 때 매우 유용합니다.

interface Shape {
  name: string;
  color: string;
}

interface Circle extends Shape {
  radius: number;
}

interface Square extends Shape {
  sideLength: number;
}

function getArea(shape: Shape) {
  if ("radius" in shape) {
    return Math.PI * shape.radius ** 2;
  } else {
    return shape.sideLength ** 2;
  }
}

위 예제에서 Shape 인터페이스를 상속하여 CircleSquare 인터페이스를 정의합니다. getArea 함수는 Shape 형태를 매개변수로 받아 다형성을 구현합니다. shapeCircle 타입이면 원의 넓이를, Square 타입이면 정사각형의 넓이를 계산하여 반환합니다.

요약

이번 포스트에서는 타입스크립트 인터페이스를 활용하여 다형성을 구현하는 방법에 대해 알아보았습니다. 인터페이스를 이용하면, 코드의 유연성과 재사용성을 높일 수 있으며, 타입 안정성을 유지하면서 다양한 형태의 객체를 다룰 수 있습니다.

다음 포스트에서는 타입스크립트의 인터페이스와 제네릭을 함께 사용하여 더욱 강력한 다형성을 구현하는 방법에 대해 알아보겠습니다.

참고 문헌: TypeScript Handbook