TypeScript에서 유틸리티 타입 이해하기: Partial, Readonly, Pick, 그리고 Record를 예제로 설명
Source: Dev.to
TypeScript에서 유틸리티 타입이란?
유틸리티 타입은 기존 타입을 기반으로 새로운 타입을 변환하거나 구성하는 데 도움을 주는 내장 제네릭 타입입니다. 타입 조작을 간단하게 만들어 코드의 안전성과 표현력을 높여줍니다.
Partial
목적
타입의 모든 속성을 선택적으로 만듭니다.
사용 시점
객체의 일부만 업데이트하거나 일시적으로 선택적 필드가 필요할 때 사용합니다.
예시
type User = { id: number; name: string; age: number };
let userUpdate: Partial = { name: "Alice" };
// userUpdate only needs to provide any subset of User's fields
Readonly
목적
타입의 모든 속성을 불변으로 만듭니다.
사용 시점
객체가 생성된 뒤 속성이 변경되는 것을 방지하고 싶을 때 사용합니다.
예시
type Config = { apiKey: string; timeout: number };
const config: Readonly = { apiKey: "123", timeout: 500 };
// config.apiKey = "456"; // Error: cannot assign to 'apiKey' because it is a read-only property
Pick
목적
다른 타입에서 특정 속성 집합을 골라 새로운 타입을 구성합니다.
사용 시점
객체의 일부 속성만 필요할 때 사용합니다.
예시
type User = { id: number; name: string; age: number };
type UsernameOnly = Pick;
// UsernameOnly is { name: string }
Record
목적
Keys 집합을 속성으로, 각 속성의 타입을 Type으로 하는 타입을 만듭니다.
사용 시점
키를 일정한 타입의 값에 매핑해야 할 때, 예를 들어 사전이나 조회 테이블을 만들 때 사용합니다.
예시
type ErrorMessages = Record;
const errors: ErrorMessages = {
"404": "Not Found",
"500": "Server Error"
};
빠른 참고
| 유틸리티 | 사용 사례 |
|---|---|
Partial | 선택적 업데이트 객체 |
Readonly | 생성 후 변형 방지 |
Pick | 타입에서 일부 필드 선택 |
Record | 타입이 지정된 값으로 이루어진 사전 |
이러한 유틸리티 타입을 마스터하면 더 깔끔하고 유연하며 타입‑안전한 TypeScript 코드를 작성할 수 있습니다.