"Partial 이 모든 거 optional 만들어. Required 가 반대. 둘 다 주마다 손 뻗을 한 줄 utility."
`Partial` — 모든 필드 optional
Partial<User> 가 User 타입 받고 모든 필드 optional 인 새 타입 만들어. { id: number; name: string } 가 { id?: number; name?: string } 됨. Update payload, configuration override, optional form state — caller 가 일부 필드만 제공할 어디든 유용.
Standard library 구현이 한 줄: type Partial<T> = { [K in keyof T]?: T[K] }. T 의 key 에 loop 돌고 각각에 `?` 적용하는 mapped 타입. Type Manipulation 트랙이 mapped 타입 자세히 다룸; 지금은 패턴 알아보면 충분.
`Required` — 모든 필드 필수
반대. Required<Profile> 가 optional 필드 가진 타입 받고 다 필수 만들어. 불완전 가능 object 받고 완전성 주장할 때, 또는 default-laden config 를 default 적용 후 strict 형태로 narrow 할 때 유용.
흔한 use case: update object
API endpoint 가 자주 부분 update payload 받음. function updateUser(id: number, patch: Partial<User>) 가 이걸 깨끗하게 타입하는 법: patch 가 User 필드의 어떤 subset 이든 담을 수. `Partial` 없으면 모든 필드 optional 인 전체 모양 손으로 써야 — 에러 가능성 있고 schema 변경에 깨지기 쉬워.