이것은 회사 후임분이 자주 쓰시던 팁인데, 좋아보여서 나도 사용해보기로 했다.
일단 기존에 작성하던 방법은 아래와 같은 예시이다.
export enum CharacterType {
LANCER, ROUXLS, RALSEI
}
export const getCharacterOrderByName = (name: string) => {
switch (name) {
case "lancer":
return CharacterType.LANCER;
case "rouxls":
return CharacterType.ROUXLS;
case "ralsei":
return CharacterType.RALSEI;
}
}
enum을 사용하다가 string으로 number형 enum값을 가져오려는 코드이다.
이 코드에서는 switch로 하나하나 검사하여 enum값을 리턴해주고 있다.
enum들의 개수가 얼마 되지 않을 때는 상관없지만, 개수가 많이 늘어나게 된다면 switch문은 그만큼 여러 번의 루프를 돌면서 검사를 해야 할 것이다.
const characterTable: Record<string, CharacterType> = {
"lancer": CharacterType.LANCER,
"rouxls": CharacterType.ROUXLS,
"ralsei": CharacterType.RALSEI
}
export const getCharacterByName2 = (name: string) => {
return characterTable[name];
}
Record로 key-value 테이블을 사전에 작성해둔다면 이 문제가 해결된다.
루프를 돌 필요 없이 key를 통해 바로 value를 가져올 수 있을 것이다.
다만 Record의 key는 number, string, symbol 타입만을 사용할 수 있다는 점을 유의해야 한다.
델타룬 뒷 챕터 좀 내 다오...
'IT > JavaScript & TypeScript' 카테고리의 다른 글
[JavaScript/알고리즘] CountDiv (0) | 2025.03.01 |
---|---|
[TypeScript] 파라미터 전달에 대한 고찰 (0) | 2025.02.20 |
[TypeScript] enum, const enum, as const (0) | 2025.02.10 |
[IT] FE 레거시 코드 리팩토링 강의 정리 3 (feat. 데이터 분석) (0) | 2025.01.20 |
[JavaScript/알고리즘] 체육복 (Greedy) (0) | 2025.01.11 |