enum과 object literal 비교
enum -> 간단한 상수 값의 경우 적합
object literal -> 복잡한 구조, 다양한 데이터 타입이 필요한 경우 적합
object literal => enum과 매우 흡사하지만 키워드가 enum이 아닌 const를 사용한다.(let도 사용가능)
객체 리터럴은 키와 밸류의 쌍으로 구성된 객체를 정의하는 방식이다.
오브젝트 리터럴의 장점
1. enum은 문자열, 숫자형 값만 대입을 할 수 있었지만, 오브젝트 리터럴은 어떤 타입의 값이든 대입할 수 있음.
2. 멤버의 값이나 데이터 타입을 마음대로 변경 가능하다.(재할당 가능하다?)
3. 다양한 데이터 타입을 지원하기 때문에 유연한 구조를 가질 수 있음.
4. 런타임 에러를 방지할 수 있다.
enum과 object literal를 사용해야 하는가?
enum -> 간단한 상수 값을 그룹화해서 관리할 때, enum은 상수 값이기 때문에 각 멤버의 값이 불변해야한다.
object literal -> 복잡한 구조와 다양한 데이터 타입을 사용해야 할 때
유틸리티 타입
1. Partial<T> 타입 : 타입 T의 모든 속성을 선택적으로 만든다.(원래 2가지 속성이 있다면 1가지만 선택할 수 있게 해준다.) -> 유연하게 타입의 속성을 선택해서 객체를 만들 수 있게 해준다.
2. Required<T> 타입: T타입 객체에 정의된 모든 속성이 반드시 제공 되어야 하는 객체 생성 시 사용
속성에 ? 로 옵션 값으로 정의가 됐어도 Required<T> 타입이 나와버리면 선택권을 박탈 당하고 모두 사용 되어야함
3. Readonly<T> 타입: 타입 T의 모든 속성을 읽기 전용으로 만들어버린다. readonly 타입으로 이뤄진 객체가 아니어도 완전한 불변 객체로 취급을 할 수 있게된다.
4. Pick<T,K> 타입 : 타입 T에서 K라는 속성들만 선택해서 새로운 타입을 만들 수 있다.
=> 타입의 일부 속성만을 포함하는 객체를 쉽게 생성 가능하다.
5. Omit<T,K>타입: Pick<T,K>와 반대로 타입T에서 K라는 속성을 제외해서 새로운 타입을 만들게 해준다.