유틸리티 타입이란?
TypeScript가 기본 제공하는 제네릭 헬퍼 타입들입니다. 기존 타입을 변환하거나 조합할 때 반복적인 타입 정의를 줄여줍니다.
자주 쓰는 것들
Partial<T>
모든 프로퍼티를 선택적으로 만듭니다. 업데이트 페이로드 타입에 자주 씁니다.
interface User {
id: number;
name: string;
email: string;
}
function updateUser(id: number, patch: Partial<User>) {
// patch.name만 보내도 됨
}
Pick<T, K>
특정 프로퍼티만 골라냅니다.
type UserPreview = Pick<User, "id" | "name">;
// { id: number; name: string }
Omit<T, K>
특정 프로퍼티를 제외합니다.
type CreateUserDto = Omit<User, "id">;
// { name: string; email: string }
Record<K, V>
키-값 구조를 깔끔하게 표현합니다.
type RolePermissions = Record<"admin" | "editor" | "viewer", string[]>;
ReturnType<T>
함수의 반환 타입을 추론합니다.
function getUser() {
return { id: 1, name: "홍길동" };
}
type User = ReturnType<typeof getUser>;
// { id: number; name: string }
조합해서 쓰기
유틸리티 타입은 조합할 때 진가가 나타납니다.
type UpdateDto = Partial<Omit<User, "id">>;
// { name?: string; email?: string }
한 번 익혀두면 매일 쓰게 됩니다.