[TIL] Javascript - number type

JavaScript Trouble Shooting

number type

  • script단과 service단에서 다음과 같은 코드를 사용할 일이 생겼다.
1
2
3
4
5
6
7
8
9
10
var eventData = {
    restSeq: [[${restSeq}]],
    // ...
};
// ...
$.ajax({
    // ...
    data: JSON.stringify(eventData),
    // ...
});
  • 위와 같은 eventData를 controller에서 받아서 selectedInfo라는 Map<String, Object> 타입으로 service에 넘겨준다.
1
Long seq = (Long) selectedInfo.get("restSeq");
  • 분명히 Object를 Long에 알맞게 casting한 것 같은데 다음과 같은 오류 메시지가 나온다.
1
class java.lang.Integer cannot be cast to class java.lang.Long
  • Integer를 Long에 casting 할 수 없다니 무슨 말인가 했더니 해결법은 다음과 같았다.

number -> String -> Long(or Integer)

  • Javascript에서는 따로 Integer, Long 타입이 있는 것이 아니라, number타입이 있다고 한다.
  • 따라서 number 타입을 String으로 변환 후 원하는 타입으로 casting을 할 수 있었다.
1
Long seq = Long.parseLong(String.valueOf(selectedInfo.get("restSeq")));
  • 참조 블로그
    • [https://wwwnghks.tistory.com/123]