TypeScript 유틸리티 타입은 18가지가 있으며, 이를 숙달하는 것은 시니어 개발자로 성장하는 데 필수적입니다. 🛠️
Pick<Type, Keys>는 기존 타입에서 특정 속성들만 선택하여 새로운 타입을 생성합니다. 예를 들어, User 타입에서 name과 age만 필요할 때 유용합니다. 🎯
Omit<Type, Keys>는 Pick과 반대로, 기존 타입에서 특정 속성들을 제외하여 새로운 타입을 만듭니다. User 생성 시 id를 제외하는 경우에 사용됩니다. ✂️
Partial<Type>은 타입의 모든 속성을 선택적(optional)으로 만듭니다. 사용자 정보 업데이트와 같이 일부 속성만 변경할 때 유용합니다. ❓
Required<Type>은 Partial과 반대로, 타입의 모든 속성을 필수적(required)으로 만듭니다. 특정 상황에서 선택적 속성을 필수로 강제할 때 사용됩니다. ✅
Readonly<Type>은 타입의 모든 속성을 읽기 전용으로 만듭니다. 불변 객체를 다룰 때 유용하며, 최상위 레벨에서만 적용됩니다. 🔒
Record<Keys, Type>은 특정 키 타입과 값 타입을 가지는 객체 타입을 정의합니다. 예를 들어, Record<'admin' | 'user', User>와 같이 특정 키를 강제하거나, Record<string, User>와 같이 일반적인 키-값 쌍을 정의할 수 있습니다. 🗺️
Extract<Type, Union>는 두 유니온 타입 간의 교집합을 추출하여 새로운 유니온 타입을 생성합니다. 여러 역할 중 공통된 역할만 뽑아낼 때 사용됩니다. 🤝
Exclude<Type, Union>는 첫 번째 유니온 타입에서 두 번째 유니온 타입에 포함된 멤버들을 제외하여 새로운 유니온 타입을 생성합니다. 특정 역할을 제외한 나머지 역할들을 정의할 때 유용합니다. 🚫