프론트엔드 개발 · 중급
TypeScript의 내장 유틸리티 타입 중 `Partial<T>`, `Pick<T, K>`, `Omit<T, K>` 각각의 역할과 실제 프로젝트에서 어떤 상황에 유용하게 활용될 수 있는지 설명해 주세요.
힌트 · `Partial`은 모든 속성을 선택적으로 만들고, `Pick`은 특정 속성만 선택하며, `Omit`은 특정 속성을 제외하여 새로운 타입을 생성하는 데 사용됩니다.
타입 변환부분 타입선택적 속성속성 선택속성 제거
모범답안
TypeScript의 내장 유틸리티 타입 Partial<T>, Pick<T, K>, Omit<T, K>는 기존 타입을 기반으로 새로운 타입을 만들 때 유용합니다.
Partial<T>은 타입 T의 모든 속성을 선택적(optional)으로 만들어 줍니다. 예를 들어, 사용자 정보 인터페이스가 있을 때, 사용자 정보 업데이트 시 모든 필드를 필수로 받지 않고 일부만 받도록 할 때 유용합니다.
Pick<T, K>는 타입 T에서 K에 해당하는 속성만 선택하여 새로운 타입을 생성합니다. 특정 데이터만 필요한 API 응답 타입을 정의할 때 유용하게 사용할 수 있습니다.
Omit<T, K>는 타입 T에서 K에 해당하는 속성을 제외하고 새로운 타입을 생성합니다. 예를 들어, 사용자 정보 인터페이스에서 비밀번호 관련 속성을 제외한 공개 프로필 정보를 정의할 때 사용할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 TypeScript 면접 질문
- TypeScript에서 여러 타입 중 특정 타입의 값을 안전하게 처리하기 위해 사용하는 타입 가드(Type Guards)의 종류와 각각의 사용 사례를 설명해 주세요.
- 공통된 속성을 가진 여러 인터페이스를 조합하여 판별된 유니언(Discriminated Unions)을 구성하는 방법과 이를 통해 얻을 수 있는 타입 안정성의 이점에 대해 설명해 주세요.
- TypeScript에서 제네릭(Generics)을 사용하는 주요 목적은 무엇이며, 제네릭 제약 조건(Generic Constraints)은 언제, 왜 필요한지 구체적인 코드 예시와 함께 설명해 주세요.
- JavaScript 라이브러리를 TypeScript 프로젝트에서 사용해야 할 때 `.d.ts` 선언 파일이 어떤 역할을 하는지 설명하고, 직접 선언 파일을 작성해야 하는 경우와 기존 선언 파일을 활용하는 방법을 비교하여 설명해 주세요.
- TypeScript에서 타입 별칭(Type Aliases)과 인터페이스(Interfaces)는 모두 객체 타입을 정의하는 데 사용됩니다. 두 가지의 주요 차이점은 무엇이며, 각각 어떤 상황에서 더 적합한지 설명해 주세요.
- TypeScript의 데코레이터(Decorators)는 무엇이며, 클래스, 메서드, 속성 데코레이터의 기본적인 사용 목적과 실제 애플리케이션에서 어떤 방식으로 활용될 수 있는지 예시를 들어 설명해 주세요.