개발관련/자바스크립트 팁
error TS2322: Type 'Timeout' is not assignable to type 'number' 해결 방법
개발자 Dane
2023. 3. 15. 18:04
반응형
React + Typescript 환경에서
error TS2322: Type 'Timeout' is not assignable to type 'number'
해결 방법
setTimeout을 쓸때 useRef에 setTimeout의 return 값을 저장해야 됩니다.
const timeoutId = useRef<number | undefined>()
timeoutId.current = setTimeout(() => {
setVisible(false)
}, timeoutMilliSeconds)
이런식으로 useRef의 제네릭 타입을 지정하게 되면 위와 같은 에러가 발생합니다.
const timeoutId = useRef<ReturnType<typeof setTimeout> | undefined>()
이렇게 useRef의 제너릭 타입을 setTimeout의 ReturnType으로 지정해주면 해결 됩니다.
반응형