Studying/JavaScript
Type '(event: MouseEvent) => void' is not assignable to type 'MouseEventHandler<HTMLDivElement>'.ts(2769)
Kim Da Ham
2023. 8. 23. 15:38
문제 발생
SearchModal.tsx 에 다음과 같이 onClick 이벤트 리스너를 등록하려고 하는데 발생한 에러입니다.
const eventStopPropagation = (event: MouseEvent)=>{
event.stopPropagation();
};
<ModalBox onClick={eventStopPropagation}>
onClick 함수에 다음과 같은 에러 메세지가 발생했습니다.

Type '(event: MouseEvent) => void' is not assignable to type 'MouseEventHandler'.ts(2769)
원인
JS에서 기본으로 제공되는 MouseEvent를 타입으로 지정해서 발생한 에러입니다.
React에서 MouseEvent는 반드시 React.MouseEvent를 사용해야 합니다.
해결 방법
다음과 같이 코드를 수정합니다.
export const eventStopPropagation = (event: React.MouseEvent)=>{
event.stopPropagation();
};
더하여, 이벤트 핸들러를 선언할 때, 이벤트 타입/함수 타입은 다음과 같이 선언합니다.
// 이벤트 타입 선언
const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {
};
// 함수 타입 선언
const handleClick: React.MouseEventHandler<HTMLButtonElement> = (event) => {
};
참고 사이트
[React/TS] 이벤트 핸들러 함수의 타입
React에서 이벤트 핸들러 함수를 선언할 때, 이벤트 타입 또는 함수 타입을 아래와 같이 선언한다. const handleClick = (event: React.MouseEvent) => { // }; const handleClick: React.MouseEventHandler = (event) => { // }; 여기
tesseractjh.tistory.com