Node 와 Window 의 setInterval 비교

시작하기

타입스크립트로 React 프로젝트를 진행하면서 setInterval 타입을 정의 할때 어떤타입으로 정의 해야하나 고민을 했습니다.
window 의 interval과 node의 interval의 타임은 다릅니다.

window 브라우저의 interval 타입

Window setInterval
1
function setInterval(handler: (...args: any[]) => void, timeout: number): number;

window의 메소드인 setInterval의 경우 number를 리턴합니다.

노드의 interval 타입

Node setInterval
1
function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout;

NodeJS의 setInterval의 경우에는 NodeJS.Timeout을 리턴합니다.

프로젝트에서 setInterval이 window메소드로 인식할 경우 node에서 timer모듈을 불러와 사용합니다.

1
2
3
4
5
6
7
import { clearInterval, setInterval } from 'timers'; // number로 인식하라는 에러가 나올시 추가

let timer:NodeJS.Timeout;
timer = setInterval(() => {
console.log('timer');
});
clearInterval(timer);

Timeout 인스턴스를 반환합니다.
노드의 모듈의 setInterval로 사용해주는 것입니다.

이것으로 리액트에서 setInterval이 nodeJS로 인식하지 않을때 해결방법을 찾아보았습니다.

Share