[typescript] 타입스크립트에서의 인터페이스와 클래스의 차이점

타입스크립트는 JavaScript에 타입을 추가한 언어로, 인터페이스와 클래스는 둘 다 타입 정의에 사용됩니다. 그러나 둘 사이에는 몇 가지 중요한 차이가 있습니다.

인터페이스 (Interfaces)

인터페이스는 타입을 정의하는 용도로 사용됩니다. 즉, 특정 개체가 가져야 하는 구조(속성과 메서드)를 정의할 때 주로 사용됩니다.

interface Shape {
  color: string;
  area(): number;
}

위의 예제에서 Shape는 색상 속성과 면적 계산 메서드를 가져야 한다고 정의하고 있습니다.

인터페이스는 타입스크립트에서 강제 사항이 아닙니다. 즉, 해당 인터페이스를 구현하는 개체가 구조를 지켜야 하는 것을 강제하지 않습니다.

클래스 (Classes)

클래스는 인터페이스와 달리 실제로 구현을 갖는 객체지향 프로그래밍 구조입니다. 클래스는 속성과 메서드를 포함하며, 인터페이스와 달리 구체적인 구현이 가능합니다.

class Circle implements Shape {
  color: string;
  radius: number;

  constructor(color: string, radius: number) {
    this.color = color;
    this.radius = radius;
  }

  area() {
    return Math.PI * this.radius ** 2;
  }
}

위의 예제에서 Circle 클래스가 Shape 인터페이스를 구현하여 area 메서드와 color 속성을 구체적으로 구현하고 있음을 볼 수 있습니다.

결론

인터페이스는 구조를 정의하는데 사용되고, 클래스는 실제 동작을 구현하는데 사용됩니다. 일반적으로, 구조를 설명하는 데는 인터페이스를, 그 구조의 구현을 포함하는 데는 클래스를 사용합니다.