[typescript] 타입 별칭과 인터페이스를 사용하여 클래스 타입 정의하기

TypeScript에서는 클래스의 타입을 정의할 때 타입 별칭(Type Aliases)과 인터페이스(Interfaces)를 사용할 수 있습니다. 이 글에서는 이 두 가지 방법을 사용하여 클래스의 타입을 정의하는 방법에 대해 살펴보겠습니다.

타입 별칭(Type Aliases)

타입 별칭은 새로운 타입의 이름을 정의할 때 사용됩니다. 클래스의 타입을 정의할 때 타입 별칭을 사용하여 간결하고 재사용 가능한 코드를 작성할 수 있습니다.

type Point = {
  x: number;
  y: number;
};

class Point2D {
  constructor(public x: number, public y: number) {}
}

type Point2DType = InstanceType<typeof Point2D>;

위 예제에서 Point 타입 별칭을 사용하여 xy 속성을 가지는 포인트 클래스의 타입을 정의하고, Point2DType으로 이를 참조할 수 있습니다.

인터페이스(Interfaces)

인터페이스는 객체의 구조를 정의하는 역할을 합니다. 클래스의 타입을 정의할 때 인터페이스를 사용하여 클래스의 구조를 명확하게 정의할 수 있습니다.

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

class Circle implements Shape {
  constructor(public radius: number, public color: string) {}
  area() {
    return Math.PI * this.radius ** 2;
  }
}

interface ShapeType extends Shape {
  radius: number;
}

위 예제에서 Shape 인터페이스를 사용하여 도형 클래스의 구조를 정의하고, ShapeType으로 해당 인터페이스를 확장하여 새로운 속성을 추가할 수 있습니다.

결론

타입 별칭과 인터페이스를 사용하여 클래스의 타입을 정의할 수 있습니다. 각각의 방법은 장단점을 가지고 있으며, 상황에 따라 적합한 방법을 선택하여 클래스의 타입을 정의할 수 있습니다.

위에 언급된 방법들을 사용하여 클래스의 타입을 정의하는 방법에 대해 알아보았습니다. TypeScript에서 클래스의 타입을 정의할 때 이러한 방법들을 유연하게 활용하여 코드를 작성할 수 있습니다.

참고문헌