TypeScript제네릭과 타입 조작

유틸리티 타입 기초

Partial, Pick, Omit, Record, ReturnType 같은 유틸리티 타입으로 반복적인 타입 변형을 줄이는 패턴을 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

ts
interface User {
  id: number;
  name: string;
  email: string;
}

type UserPatch = Partial<User>;
type UserSummary = Pick<User, "id" | "name">;

설명

  • 유틸리티 타입은 기존 타입을 자주 필요한 방식으로 변형하기 위해 TypeScript가 미리 제공하는 도구 모음입니다.
  • Partial<T>는 모든 속성을 optional로 만들고, Pick<T, K>는 필요한 키만 골라 새 타입을 만듭니다.
  • Omit<T, K>는 반대로 일부 키를 제외하고, Record<K, V>는 키 집합과 값 타입으로 새 객체 타입을 구성합니다.
  • ReturnType<T>Parameters<T>처럼 함수 시그니처에서 정보를 뽑는 도구도 있어, 타입 중복을 크게 줄일 수 있습니다.
  • 핵심은 타입을 매번 새로 쓰기보다, 이미 있는 타입에서 안전하게 변형해 재사용하는 습관입니다.

짧은 예제

ts
type Status = "idle" | "loading" | "done";
type StatusLabels = Record<Status, string>;

type UpdateUser = Partial<User>;
type UserNameOnly = Pick<User, "name">;

빠른 정리

유틸리티역할
Partial<T>모든 속성을 선택 속성으로 변경
Pick<T, K>일부 키만 선택
Omit<T, K>일부 키를 제외
Record<K, V>키 집합으로 새 객체 타입 구성
ReturnType<T>함수 반환 타입 추출

주의할 점

유틸리티 타입은 편리하지만, 원본 타입의 의도를 흐릴 정도로 중첩하면 오히려 읽기 어려워집니다. 자주 쓰는 변형은 별도 이름을 붙여 두는 편이 더 관리하기 좋습니다.

참고 링크

1 sources