"유지할 거 알면 Pick. 떨굴 거 알면 Omit."
`Pick` — 특정 key 선택
Pick<User, 'id' | 'email'> 가 그 두 필드만 가진 새 타입 만들어. 두 번째 parameter K 가 `keyof T` 로 제약, 그래서 존재 안 하는 key 요청 못 함. 결과 타입이 선택된 필드만 가지고, 원래 타입 유지.
Interface 의 subset 노출하고 싶을 때 유용 — 예: 전체 User 모양의 subset 인 public profile.
`Omit` — 특정 key 제거
Omit<User, 'password'> 가 그 필드 없는 새 타입 만들어. 남은 필드가 타입 유지. 민감 subset 빼고 전부 원할 때 유용 — client 반환 전 `password` strip, API 전송 전 `internal_id` strip.
어느 거 선택할 때
둘 다 같은 연산에 유효; 더 짧은 list 가진 거 골라. 20 중 3개 원하면 Pick 이 더 명백. 20 중 17개 원하면 Omit 이 더 잘 읽혀.
또한: Pick 이 key typo 하면 큰 소리로 실패 (constraint 가 잡음). Omit 은 strict mode 에서만 큰 소리로 실패 — 없으면 존재 안 하는 key omit 이 조용히 허용.
Pick 과 Omit 이 역 연산. 함께 타입 property 의 어떤 subset 이든 원본의 변환으로 묘사하게 해. Subset 수동 re-type 대신 써 — refactor-safe.