학습 공간 개념 · 판단 · 실험

Fanta Lab

질문 117 · 실전 면접 답변

제네릭과 유틸리티 타입은 어떻게 타입 관계를 보존하나요?

이렇게 답해 보세요 (핵심 답변)

제네릭(Generics)은 타입을 미리 하나로 고정하지 않고 타입 매개변수(<T>)로 열어 두었다가, 실제 호출 시점의 구체적인 타입 관계를 그대로 유지해 주는 기능입니다. 예를 들어 <T>(value: T): T는 입력과 출력 타입이 같다는 계약을 보존하며 extends로 필요한 프로퍼티 제약도 걸 수 있습니다. 또한 Partial<T>, Pick<T, K>, Omit<T, K> 같은 유틸리티 타입은 기존 타입을 바탕으로 부분 타입을 중복 선언 없이 안전하게 파생시킵니다.

함께 설명하면 좋은 이유 (꼬리질문 대비)

  1. any를 쓰면 함수 통과 후 구체적인 타입 정보가 사라지지만, 제네릭을 쓰면 호출 지점마다 추론된 정확한 타입이 반환값까지 이어집니다.
  2. 유틸리티 타입으로 원본 타입에서 필요한 형태를 파생시키면 원본 모델이 바뀔 때 파생 타입도 자동으로 함께 반영됩니다.

면접에서 자주 하는 실수

Partial<T> 같은 내장 유틸리티 타입은 1단계 프로퍼티만 선택적(?)으로 바꾸며, 중첩된 내부 객체나 런타임의 실제 객체 값을 변환하지는 않습니다.

원리와 예제까지 읽기

공식 참고 자료

질문 목록 출처 ↗ · 원본 117번을 바탕으로 질문과 답변을 새로 정리했습니다.

← TypeScript