Javascript

[ts] TouchEvent 타입 문제

킹king 2024. 10. 16. 17:21
반응형

모바일에서는 터치 관련 이벤트가 click, mouseup 등이 아닌 touchstart, touchend 류로 들어옴. 그래서 이에 맞게 타입 처리를 해줬는데 instanceof로 타입 체크를 하는 도중에 TouchEvent가 아니라고 뱉어버리는 경우가 있음.

 

원인은

- 브라우저 문제

- touchstart이벤트인데 이벤트핸들러를 click으로 해버림

- 타입 추론을 명시적으로 안해줌

 

라고 하는데 아니 나 다 제대로 했다고~~~~~~

 

아무튼 타입이 뭐든 값은 제대로 나와줬으면 해서 type값을 직접 비교해서 clientX와 같은 좌표를 뽑아내고 있음.

const getClientX = (event: MouseEvent | TouchEvent) => {
  if (event.type == 'touchend') {
    return (event as TouchEvent).changedTouches[0]?.clientX
  }
}

 

이렇게ㅇㅇ 참고로 touchstart, move일때는 event.touches[0].clientX임.