최신 컴파일러 버전을 사용하기 위해 이전 TypeScript 코드를 업그레이드하는 중이며 setTimeout
. 코드는 setTimeout
숫자를 반환하는 브라우저의 함수 를 호출 할 것으로 예상합니다 .
setTimeout(handler: (...args: any[]) => void, timeout: number): number;
그러나 컴파일러는 대신 NodeJS.Timer를 반환하는 노드 구현으로이를 해결합니다.
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;
이 코드는 노드에서 실행되지 않지만 노드 유형은 다른 항목에 대한 종속성으로 가져옵니다 (무엇인지 확실하지 않음).
setTimeout
원하는 버전을 선택하도록 컴파일러에 지시하려면 어떻게 해야합니까?
문제의 코드는 다음과 같습니다.
let n: number;
n = setTimeout(function () { /* snip */ }, 500);
이로 인해 컴파일러 오류가 발생합니다.
TS2322 : '타이머'유형은 '번호'유형에 할당 할 수 없습니다.