[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
속성을 추가하는 데 사용됩니다. 반면 인터페이스에서는 이러한 패턴을 사용할 수 없습니다.
그러므로 선택적 속성을 가진 복잡한 타입을 정의해야 하는 경우, 타입 별칭이 더 효율적일 수 있습니다.
이러한 차이점을 고려하여 프로젝트의 요구 사항에 적합한 방식을 선택할 수 있습니다.