enum -> 간단한 상수 값의 경우 적합
object literal -> 복잡한 구조 + 다양한 데이터 타입이 필요한 경우에 적합
1) Partial
타입 T의 모든 속성을 선택적으로 생성
기존 타입의 일부 속성만 제공하는 객체를 쉽게 생성할 수 있다
2) Required
타입 T의 모든 속성을 필수적으로 만든다
모든 속성이 반드시 전부 제공되는 객체를 생성해야 할 때 사용
3) Readonly
타입 T의 모든 속성을 읽기 전용으로 만든다
4) Pick<T, K>
타입 T에서 K 속성들만 선택하여 새로운 타입을 만든다
5) Omit<T, K>
타입 T에서 K 속성들만 제외한 새로운 타입을 만든다