[typescript] 타입 별칭과 인터페이스의 불변성과 가변성 개념 비교

타입스크립트에서 타입 별칭인터페이스는 둘 다 타입을 정의하는 데 사용됩니다. 이 두 가지의 주요 차이점은 불변성과 가변성 개념에 관한 것입니다. 이번 포스트에서는 타입 별칭과 인터페이스 사이의 이러한 차이점을 비교해 보겠습니다.

타입 별칭 (Type Alias)

타입 별칭은 기존 타입에 새로운 이름을 지정할 수 있도록 해줍니다. 이렇게 하면 같은 타입을 여러 번 사용해야 하는 경우 코드의 가독성과 재사용성을 높일 수 있습니다. 또한 제네릭을 이용해 유연한 타입 별칭을 만들 수도 있습니다.

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

type Rectangle = {
  width: number;
  height: number;
  position: Point;
};

인터페이스 (Interface)

인터페이스는 타입을 설명하는 구조적인 규약으로, 클래스나 객체가 해당 인터페이스의 구조를 따르도록 강제할 수 있습니다. 인터페이스는 가변성을 가지고 있어, 해당 타입의 속성을 확장하거나 변경할 수 있습니다.

interface Point {
  x: number;
  y: number;
}

interface Rectangle extends Point {
  width: number;
  height: number;
}

비교: 불변성과 가변성

타입 별칭은 불변성을 가지고 있어, 한 번 정의된 타입은 변경할 수 없습니다. 따라서 이미 정의된 타입 별칭에 새로운 속성을 추가하거나 변경하는 것은 불가능합니다.

반면에 인터페이스는 가변성을 가지고 있어, 이미 정의된 인터페이스에 새로운 속성을 추가하거나 변경하는 것이 가능합니다.

결론

타입 별칭과 인터페이스는 타입을 정의하는 데 모두 유용하게 활용될 수 있습니다. 하지만 불변성과 가변성의 관점에서는 주의해서 사용해야 합니다. 타입 별칭은 불변적인 타입을 정의하거나 재사용할 때 유용하며, 인터페이스는 타입의 가변성과 확장성을 고려해야 할 때 유용하게 활용할 수 있습니다.

이러한 개념을 이해하여, 상황에 맞게 타입 별칭과 인터페이스를 사용하여 타입을 정의하고 활용할 수 있는 것이 중요합니다.

참고 문헌: 타입스크립트 공식 문서

이상으로 타입 별칭과 인터페이스의 불변성과 가변성에 대해 알아보았습니다. 감사합니다!