[typescript] 타입 별칭과 인터페이스의 선택 속성 개념 비교

타입스크립트에서 타입 별칭과 인터페이스는 모두 사용자 정의 타입을 만들 때 사용됩니다. 이 두 가지 기능 간에는 선택적 속성을 다루는 방식에 차이가 있습니다. 이 포스트에서는 타입 별칭과 인터페이스에서 선택적 속성을 다루는 방법을 비교하겠습니다.

타입 별칭 (Type Alias)

타입 별칭을 사용하면 새로운 이름을 지어 기존 타입에 대해 간단히 참조할 수 있습니다. 선택적인 속성을 사용하려면 ? 기호를 사용하여 해당 속성을 나타냅니다. 예를 들어:

type User = {
  name: string;
  age?: number;
};

위 예제에서 age 속성 뒤에 올 수 있는 ? 기호는 age 속성이 선택적이라는 것을 나타냅니다.

인터페이스 (Interface)

인터페이스는 객체의 구조를 설명하는 명세로 볼 수 있습니다. 선택적 속성을 표현하는 데도 ? 기호를 사용합니다. 예를 들어:

interface User {
  name: string;
  age?: number;
}

타입 별칭과 마찬가지로 age 속성 뒤에 올 수 있는 ? 기호는 age 속성이 선택적이라는 것을 나타냅니다.

선택적 속성: 타입 별칭 vs. 인터페이스

둘 다 선택적 속성을 표현할 수 있지만 타입 별칭은 기본값을 사용하여 선택적 속성을 정의할 수 있는 반면, 인터페이스는 기본값을 사용할 수 없습니다.

type User = {
  age: number;
  name: string;
  isAdmin: boolean;
};

type Admin = {
  age: number;
  name: string;
  isAdmin: boolean;
} & { role: string };

위 예제에서 Admin 타입 별칭은 선택적인 role 속성을 추가하는 데 사용됩니다. 반면 인터페이스에서는 이러한 패턴을 사용할 수 없습니다.

그러므로 선택적 속성을 가진 복잡한 타입을 정의해야 하는 경우, 타입 별칭이 더 효율적일 수 있습니다.

이러한 차이점을 고려하여 프로젝트의 요구 사항에 적합한 방식을 선택할 수 있습니다.