회사일을 진행하면서 다시 한 번 타입스크립트의 중요성을 깨닫는 순간이 있었다.
유지 보수를 하기 위해 자바스크립트 코드를 수정하고 있었으며,
useState에서 boolean으로 설정하고, 이 값을 AsyncStorage에 저장, 다른 스크린에서 읽은 뒤 props전달...
마지막 전달 받은 props 값을 console log로 찍었을 때, 분명히 true / false 값이 나왔다.
하지만 삼항연산자가 적용이 안된다.
아뿔사. true / false 의 타입을 찍어보니 string이었다!
Boolean(null); //false
Boolean(undefined); //false
Boolean(NaN); //false
Boolean(''); //false
Boolean(0); //false
Boolean(1); //true
Boolean('false'); //true
Boolean('true'); //true
Boolean('reference'); //true
문자열을 인자로 하는 예시를 보면 빈 문자열을 제외한 모든 문자열이 true로 반환된다.
Boolean이 아닌 값을 변환할 때 Boolean 함수를 사용해서는 안된다.
정답:
JSON.parse('true'); //true
JSON.parse('false'); //false
$.parseJSON('true'); //true
$.parseJSON('false'); //false
JSON 객체 또는 jQuery를 통해 원하는 결과를 얻을 수 있다.
단, 유효하지 않은 문자열이 전달되면 예외가 발생된다. 예를 들어 대문자 'TRUE', 'FALSE'에 해당된다.
'JavaScript' 카테고리의 다른 글
[JavaScript] SyntaxError: Unexpected token u in JSON at position 0 (0) | 2023.01.29 |
---|