특정한 넘버 혹은 스트링을 타입으로 사용하는 경우가 있다.
아래와 같은 예시가 그에 해당한다.
type ContryCode = 'ko' | 'en' | 'ja' | 'ug';
const code: ContryCode = 'en'
그런데 위처럼 or 연산자로 타입을 정의해 버리면 축약형으로 쓴 ja, ko, en이 무엇을 의미하는지 까먹거나 모를 때가 있다. ug가 어떤 국가를 의미하는지 아는 사람이 있을까? 별로 없을 것이라 짐작한다. ug는 Uganda 우간다 코드다.
type ContryCode = 'korea' | 'english' | 'japanese' | 'uganda';
const code: ContryCode = 'korea';
const korea = 'ko';
const english = 'en';
const japanese = 'ja';
const uganda = 'ug';
type ContryCode = typeof korean | typeof english | typeof japanese | typeof uganda
enum ContryCode {
ko = 'korean',
en = 'english',
ja = 'japanese',
ch = 'chinese',
sp = 'spanish',
}
const code: ContryCode = LanguageCode.korean
마치 객체의 key가 ko 값이 korean안 느낌이 든다. 실제로 이러한 원리이며, 값을 변경할 수 없도록 freezon 된 객체를 사용한다.
원래 뜻을 유지하며, 짧은 코드로 가독성을 높이고 싶은 경우 enum을 사용해보자.