Typescript 문제 해결및 팁들 정리

The left-hand side of an arithmetic operation must be of type ‘any’ ‘number’ or an enum type (TS2363)

이 오류는 주로 new Date()를 연산하는 과정에서 발생하게 된다. js 코드에서는 문제가 없었지만 Typescript에서 사용할 경우는 오류로 처리된다.

TS2363 오류 예시
_options.expires = new Date(new Date() * 1 + _options.expires * 864e+5)

위의 코드는 new Date() * 1 처리에서 오류로 발생된다. 이유는 Date() 로 생성한 값을 연산에 사용하기 때문이다. 물론 연산이 불가능한 것은 아니지만 Typescript에서는 이를 명시적으로 연산이 가능한 숫자와 같이 처리를 해 줘야 한다.

이를 해결하는 방법은 단항 연산자 (Unary operator)인 + 를 지정하면 된다.

TS2363 오류 해결 예시
_options.expires = new Date(+new Date() * 1 + _options.expires * 864e+5)

위와 같이 지정하면 new Date()의 결과를 숫자(number)로 취급되기 때문에 연산에 사용할 수 있다.

참고 자료