에러 문구
Element implicitly has an 'any' type because expression of type 'number' can't be used to index type
const USER_LOCK_STATE = {
0: {
label: '라벨 내용 0',
value: '0',
},
1: {
label: '라벨 내용 1',
value: '1',
},
2: {
label: '라벨 내용 2',
value: '2',
},
3: {
label: '라벨 내용 3',
value: '3',
},
};
// 에러 발생!!!
const getLockStateFormat = (lockState: number) => `${lockState}: ${USER_LOCK_STATE[lockState].label}`;
위와 같은 상황에서 객체의 키 값을 이용해 라벨 값을 얻어내고자 하면 에러가 발생한다.
이유는 바로 객체를 선언할 때 타입을 제대로 작성해주지 않았기 때문이었다.
const USER_LOCK_STATE : {[key: number] : {label: string; value: string} } = {
0: {
label: '라벨 내용 0',
value: '0',
},
1: {
label: '라벨 내용 1',
value: '1',
},
2: {
label: '라벨 내용 2',
value: '2',
},
3: {
label: '라벨 내용 3',
value: '3',
},
};
// 정상 작동!!!
const getLockStateFormat = (lockState: number) => `${lockState}: ${USER_LOCK_STATE[lockState].label}`;