밀리초 단위로 시간을 가져오는 useTimeout 훅을 고려해 보겠습니다.

export const useTimeout = (timerMs: number) => {
  useEffect(
    () =>
      setTimeout(() => {
        console.log("Done!");
      }, timerMs),
    [timerMs],
  );
};

setTimeout의 결과를 반환하는 함수와 함께 useEffect를 사용하고 있습니다.

하지만 오류가 발생했습니다.

Type 'Timeout' is not assignable to type 'void | Destructor'

Challenge

여러분의 임무는 timeout을 정리하고 이 오류를 없애는 방법을 알아내는 것입니다.

Properly use the useEffect API

useEffect API를 올바르게 사용하세요.

오류 메시지는 다음과 같습니다.

Type 'Timeout' is not assignable to type 'void | Destructor'

이 함수의 의미를 이해하기 위해 useEffect 함수를 통해 Destuctor 의 의미를 살펴보겠습니다.

Examining useEffect's Types

useEffect 의 타입 살펴보기

useEffectCMD + Click 를 사용하여 해당 타입을 탐색합니다.

이 함수는 크게 두 부분으로 나뉩니다. effect: EffectCallbackdeps: DependencyList