반응형

typescript 환경에서 개발하던 도중 받은 값이 enum안에 존재하는지 확인해야 하는 일이 생겼다.

enum을 반복해서 enum에 포함되는 값인지 확인해보자.

 

enum 반복

아래와 같은 enum이 있다고 가정하자.

enum Test {
    Zero = 0,
    One = 1,
    Two = 2,
    Three = 3
}

typescript에서의 enum은 결국 javascript의 object로 변환이 된다.

Test의 실제 값

Object.keys와 Object.values로 값을 뽑을 수 있다.

// 객체의 key를 뽑아낸 후 숫자로 형변환 한다. 그 후 문자열만 뽑는다.
// keys = ['Zero','One','Two','Three']
const keys = Object.keys(Test).filter((v) => isNaN(Number(v)));

// 객체의 value를 뽑아낸 후 숫자로 형변환 한다. 그 후 숫자만 뽑는다.
// values = [0,1,2,3]
const values = Object.values(Test).filter((v) => !isNaN(Number(v)))

이런식의 코드를 거치면 key만 있는 배열이나 value만 있는 배열을 얻을 수 있다.

 

출처

https://bobbyhadz.com/blog/typescript-iterate-enum

 

How to Iterate over Enums in TypeScript | bobbyhadz

To iterate over enums, use the `Object.keys()` or `Object.values()` methods to get an array of the enum's keys or values. Filter out any unnecessary values. Use the `forEach()` method to iterate over the array.

bobbyhadz.com

 

반응형
얼은펭귄