패스잇
프론트엔드 개발 · 중급

공통된 속성을 가진 여러 인터페이스를 조합하여 판별된 유니언(Discriminated Unions)을 구성하는 방법과 이를 통해 얻을 수 있는 타입 안정성의 이점에 대해 설명해 주세요.

힌트 · 고유한 리터럴 타입 속성(discriminant)을 사용하여 유니언 멤버를 구분하고, `switch` 문 등으로 각 멤버의 타입을 안전하게 추론하는 방법을 설명합니다.

판별자타입 좁히기타입 가드타입 안정성합집합 타입

모범답안

네, 판별된 유니언은 타입스크립트에서 여러 인터페이스를 묶어 하나의 타입으로 표현하면서, 각 인터페이스를 구분할 수 있는 속성을 추가하여 타입 안정성을 높이는 방법입니다.

각 인터페이스에 공통된 속성, 예를 들어 type이라는 속성을 추가하고, 각 인터페이스마다 type 속성에 고유한 리터럴 타입을 할당합니다. 이렇게 하면 유니언 타입을 사용할 때 type 속성 값을 확인하여 어떤 인터페이스가 사용되었는지 알 수 있습니다.

interface Circle {
  type: 'circle';
  radius: number;
}

interface Square {
  type: 'square';
  sideLength: number;
}

type Shape = Circle | Square;

function getArea(shape: Shape) {
  switch (shape.type) {
    case 'circle':
      return Math.PI * shape.radius * shape.radius;
    case 'square':
      return shape.sideLength * shape.sideLength;
  }
}

switch 문이나 타입 가드를 사용하여 type 속성을 기반으로 타입을 좁히면, 타입스크립트 컴파일러는 각 분기에서 어떤 인터페이스가 사용되는지 정확하게 추론할 수 있습니다. 이를 통해 런타임 에러를 줄이고 코드의 안정성을 높일 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 TypeScript 면접 질문

← TypeScript 면접 질문 전체 보기