-
NOW SOPT 자바스크립트 과제 중 타입이 string이었던 이슈Javascript 2024. 5. 12. 12:55
안녕하세요 여러분. 이번 주제는 string입니다!
자바스크립트 deep dive에 string 편을 읽던 중,
지난 자바스크립트 과제(쇼핑몰과 장바구니)에서 상품의 id의 값을 비교하여
해당 상품을 localStorage에 저장하거나 삭제하는 기능을 구현할 때
product의 id와 로컬스토리지에서 가져온 product의 id의 타입이 달라 꽤 오랜 시간 고생했는데요.
초기에 작성한 코드를 같이 보시죠.
//초기 코드 removeProduct(productId) { this.cartList = this.cartList.filter( (item) => item.id !== productId ); }
아무 로직이 동작하지 않아서 멘붕했습니다.
아무리 봐도 로직상 문제가 없었거든요...
같이 문제의 원인을 생각해볼까요??
음....
도저히 떠오르지 않았습니다.
정말 도저히 떠오르지 않아서 gpt 선생님께 물어봤습니다.
와 이럴수가... 타입이 다를줄이야 ㅋㅋㅋㅋㅋㅋ
그래서 코드를 아래와 같이 고쳤습니다.
//해결한 코드 removeProduct(productId) { this.cartList = this.cartList.filter( (item) => item.id.toString() !== productId //toString() 붙이기 ); }
타입을 일치화 시켜주니 바로 동작하네요...
타입스크립트가 그리워지는 밤입니다.
살면서 타입스크립트가 그리워지는 날이 오는군요.
오늘의 결론: localStorage에 값들은 전부 string이니 주의하자!
그리고 타입스크립트를 쓰자!
마지막으로 타입 체크를 잘하자! toString()이나 Number()로 타입 변환 잘해주자!
'Javascript' 카테고리의 다른 글
[JS] 클래스 문법을 비스무리하게 구현해보자 (0) 2025.02.23 [JS] 콜백지옥에서 벗어나기 (5) 2024.06.02 [JS] 배열 메서드들의 올바른 역할 (3) 2024.05.05 [JS]함수 선언문 vs 표현식 (6) 2024.04.21 localStorage & sessionStorage (1) 2024.04.19