🧐 원인
이 오류는 주로 new Date
를 연산하는 과정에서 발생하게 된다.
Javascript 코드에서는 문제가 없었지만 Typescript에서 사용할 경우는 오류로 처리된다.
이는 객체로 생성한 변수의 값을 연산에 사용하기 떄문에 에러가 나는 것 이다.
물론 연산이 불가능한 것은 아니지만 Typescript에서는 명시적으로 연산이 가능하도록 number
처리를 해줘야 하기때문이다.
📌 단항연산자?
단항연산자(Unary Operator)
는 한 개의 피연산자, 즉 한개의 인수와 짝을 이루어 역할을 하는 연산자이다.
단항연산자의 종류로는 부호(+,-), 증감연산자(++, —), 비트연산자(~), 논리연산자(!) 가 있다.
이 중의 부호 연산자는 기존의 +
기호와는 달리 숫자를 변환해주는 역할을 담당하는 연산자는 인수의 바로 앞에 붙어 사용된다.
💡 ECMA 문서에 따른면 `단항연산자 (+)` 는 문자(string)타입 인수를 숫자(Number)타입 형태로 빠르고 간단하게 바꾸어주는 문법이라고 명시하고 있다.
기존 자바스크립트에서 문자열을 숫자로 변환할 때 사용하던 parseInt , parseFloat , Number 함수를 생각하자면, 단항연산자 (+) 는 코드도 아주 심플하고 가독성도 좋다
단항연산자 (+)가 적용 범위
단항 더하기 연산자 +
는 피연산자가 숫자가 아니라면 숫자로 변환을 시도합니다.
정수와 실수로 된 문자열 표현뿐 아니라 문자열이 아닌 boolean(true, false)
, null
또한 변환할 수 있다. 또한 10진수와 16진수, 음수 형식의 정수도 지원이 가능하다.
const x = 1;
const y = -1;
console.log(+x);
// Expected output: 1
console.log(+y);
// Expected output: -1
console.log(+'');
// Expected output: 0
console.log(+true);
// Expected output: 1
console.log(+false);
// Expected output: 0
console.log(+'hello');
// Expected output: NaN
다만 주의할 점은 BigInt 값에 연산자를 사용하면 TypeError를 발생하며, 특정 값의 구문을 분석할 수 없다면 NaN
으로 리턴한다.
🛠️ 해결방법
따라서 이 오류를 해결하는 방법은 단항 연산자(Unary Operator)인 '+'
를 지정하면 된다.
//(...중략)
const {isLoading, data: price} = useQuery<CoinPriceInterface[]>("key", fetchData);
const getSeriesValue = () => {
return data?.map(v=> {
date : new Date(+price.time_close * 1000), //⭐=> +price.time_close * 1000
//(...중략)
});
}
참고
'Today, I ()' 카테고리의 다른 글
코드품질관리 분석툴 SonarQube 도입기 (2) (0) | 2022.01.13 |
---|---|
3년차 주니어 개발자의 2021 회고 (0) | 2021.12.27 |
코드품질관리 분석툴 SonarQube 도입기 (1) (0) | 2021.11.25 |
proj4.js로 좌표계 변환하기(중부원점 좌표계 >> WGS84좌표계) (1) | 2021.11.23 |
다꾸? 아니 깃꾸! 뽄새 넘치는 Github 프로필 꾸미기 (0) | 2021.11.17 |