Search
🚨

enum 값에 key로 접근 시 타입 에러

에러 내용

Element implicitly has an 'any' type because index expression is not of type 'number'.

코드

Language 라는 이름의 enum이 존재
languageList의 key 중 string인 것을 필터링하여 배열로 만듬
배열 내 key로 Language에서 값을 얻기 위해 접근 시 오류 발생
export declare enum Language { KO = 0, EN = 1, JP = 2, CN = 3, TH = 4 } const languageList = Object.keys(Language).filter((key) => isNaN(Number(key))); {languageList.map((language) => { return ( <Option key={language} value={Language[language]}> {language} </Option> ); })}
TypeScript
복사

해결책

language가 Language의 key로 구성되어 있다는 것을 타입 단언으로 처리하여 충분한 타입 정보 제공
<Option key={language} value={Language[language as keyof typeof Language]}>
TypeScript
복사

깨달은 점

enum 값에 접근할 때는 타입스크립트에서 유효한 key로만 접근이 가능하다
추후, 더 나이스하게 해결할 수 있는 방법이 있을지 알아보고 싶다.