에러 메세지
에러 원인
const diffSeconds = (currentTime - createdTime) / 1000;
게시판에서 글작성 시간과 현재 시간을 비교해서 '몇 시간전, 방금 전' 등을 출력하는 함수를 작성중이었습니다.
위 코드에서 currentTime과 createdTime은 Date 타입인데, 타입스크립트에서 ' - ' 연산은 any, number, bigint만 가능하다는 겁니다.
즉 any, number, bigint 이외의 타입을 산술연산자(+, -, *, / 등)를 이용해 연산하려고 할 경우 위와 같은 에러가 발생합니다.
해결 방법
그렇다고 Date 타입을 any로 바꿀 수는 없으니 다른 방법을 고려해보아야합니다. 이럴 때 유용하게 사용할 수 있는 것이
valueOf() 함수입니다. valueOf()는 원시값을 반환해주는 함수로, Date객체와 함께 사용할 경우 Date 객체의 메서드들을 그대로 활용할 수 있습니다.
아래 코드처럼 수정 시 에러는 사라지고, 이전과 동일하게 작동합니다.
const diffSeconds = (currentTime.valueOf() - createdTime.valueOf()) / 1000;
'FE > error' 카테고리의 다른 글
[TypeScript] error 2322: React Prop 전달 시 IntrinsicAttributes 타입 에러 (0) | 2023.04.27 |
---|---|
[git] git 파일명 대소문자 구분 error (1) | 2023.04.14 |
[Typescript] error 2786 : 'Component' cannot be used as a JSX component. (0) | 2023.02.21 |
댓글