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

타입스크립트에서는 타입 별칭과 인터페이스를 사용하여 코드의 유연성과 안정성을 높일 수 있습니다. 이러한 두 가지 기능은 각자의 장단점과 사용 용도가 있으며, 이들을 활용하여 타입 가드를 구현하는 방법에 대해 비교해보겠습니다.

타입 별칭 (Type Alias)

타입 별칭은 기본적으로 새로운 타입으로 이름을 정의하는 기능입니다. 특정 타입이나 인터페이스를 변수로 지정하여 재사용할 수 있으며, 유니온 타입 또는 제네릭 타입과 함께 사용할 수 있습니다. 예를 들어 다음과 같이 사용할 수 있습니다.

type ID = string | number;

type User = {
  id: ID;
  name: string;
  email: string;
};

인터페이스 (Interfaces)

인터페이스는 객체의 구조를 정의하는데 사용됩니다. 클래스가 인터페이스를 구현할 수 있으며, 추가 속성이나 메서드를 포함할 수 있습니다. 즉, 인터페이스는 객체의 모양(shape)을 정의합니다. 예를 들어 다음과 같이 사용할 수 있습니다.

interface User {
  id: string | number;
  name: string;
  email: string;
}

타입 가드 (Type Guards)

타입 가드는 런타임에서 특정 타입을 확인하고, 해당 타입에 따라 다른 동작을 수행하는 기능입니다. 주로 유니온 타입을 다룰 때 유용하게 활용됩니다. 타입 별칭과 인터페이스 모두 타입 가드 구현에 사용될 수 있으며, 이를 활용하여 코드의 안정성을 높일 수 있습니다.

아래 예제는 타입 가드를 적용하여 유니온 타입을 다루는 방법을 보여줍니다.

type Fish = { swim: () => void };
type Bird = { fly: () => void };

function move(animal: Fish | Bird) {
  if ("swim" in animal) {
    return "I am swimming";
  }
  return "I am flying";
}

결론

타입 별칭과 인터페이스는 각자의 특성에 따라 다양한 상황에서 활용될 수 있습니다. 타입 가드를 구현하는 데에는 두 가지 기능을 적절히 활용함으로써 코드의 안정성을 높일 수 있습니다. 적절한 상황에 맞게 타입 별칭과 인터페이스를 선택하여 사용할 수 있도록 공부하고 익히는 것이 중요합니다.

더 자세한 내용은 타입 별칭 공식 문서인터페이스 공식 문서를 참고할 수 있습니다.