enum은 switch문을 함수를 사용하여 원하는 값을 리턴받아 사용하곤 합니다 하지만 switch문은 case를 쓰고 한칸 내려서 꼭 return을 해줘야 하며 코드가 조금은 복잡해집니다.
const useMagicianSkill = (magician) => {
switch (magician.skill) {
case Skills.fireball:
return '불로 이뤄진 구체를 날림'
case Skills.iceball:
return '얼음으로 이뤄진 구체를 날림'
case Skills.thunderball:
return '번개로 이뤄진 구체를 날림'
}
}
console.log('useMagicianSkill : ', useMagicianSkill(fireMagician));
// useMagicianSkill : 불로 이뤄진 구체를 날림
그러나 dictionary를 사용하면 좀 더 간결하게 작성할 수 있습니다. 간결한만큼 코드 가독성도 좋아집니다. enum과 dictionary는 비슷해보이지만 enum은 상수값들의 집합이지만 dictionary는 키와 값의 집합입니다.
const useMagicianSkillDictionary = (magician) => {
let magicianSkills = {
[Skills.fireball]: '불로 이뤄진 구체를 날림',
[Skills.iceball]: '얼음으로 이뤄진 구체를 날림',
[Skills.thunderball]: '번개로 이뤄진 구체를 날림',
}
return magicianSkills[magician.skill]
}
console.log('useMagicianSkillDictionary : ', useMagicianSkillDictionary(thunderMagician));
// useMagicianSkillDictionary : 번개로 이뤄진 구체를 날림
enum과 dictionary를 비교해서 보시기에 어떠신가요? 현재는 skill이 세가지만 예시로 넣어놨지만 10가지 이상 된다면 switch를 사용한 enum은 1가지당 case, return문 2줄을 꼭 써줘야 하지만 dictionary는 10가지 해도 10줄만 쓰면 됩니다. 코드량이 2배차이가 되는것입니다.