티스토리 뷰

개발

useState의 타입지원

Dev.JH 2023. 2. 13. 15:52

개발을 진행중이던 프로젝트에 framer-motion을 이용하여 애니메이션 효과를 주기 위해 문서들을 뒤적거리고 있었던 찰나였다.

 

클릭 이벤트를 이용한 motion

 

마음에 드는 효과가 있어서 한번 코드를 그대로 베껴보던 도중 문제를 맞닥뜨렸다. 

문제가 되는 코드는 다음과 같았다.

 

const [selectId, setSelectId] = useState<number>();

const overlayClicked = () => {
        setSelectId(null);
};

'null' 형식의 인수는 'SetStateAction<number | undefined>' 형식의 매개 변수에 할당될 수 없습니다.ts(2345)

다음과 같이 null로 초기화 하고자 하였으나 오류가 발생하는 모습이었다. 

useState는 타입추론을 잘 지원하지만 undefined 또는 null로 초기화하려는 경우 명시적으로 제네릭 파라미터를 입력하여야 한다고 한다. 그렇지 않으면 Typescript는 제대로 동작하기 위한 충분한 정보를 알 수 없다.

document의 코드는 JavaScript 문법이라서 Typescript를 사용하는 나는 그대로 코드를 가져 올 수 없었다.

const [selectId, setSelectId] = useState<number | null>();

const overlayClicked = () => {
        setSelectId(null);
};

다음과 같이 제네릭으로 null을 명시해주었더니 오류가 깔끔하게 사라졌다.

'개발' 카테고리의 다른 글

[React] ThemeProvider 알아보기  (2) 2023.08.23
[React] React Query 알아보기  (2) 2023.08.21
[React] children 알아보기  (2) 2023.08.17
Netlify 배포 후 새로고침시 404 에러  (0) 2023.08.09
프론트엔드 로그인 개념  (1) 2023.07.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31