Javascript

NOW SOPT 자바스크립트 과제 중 타입이 string이었던 이슈

popeyes 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()로 타입 변환 잘해주자!