타입스크립트를 사용할 때는 다른 파일이라고 하더라도 블록 레벨 스코프 변수(let, const로 선언한 변수)를 재선언할 경우 아래와 같은 에러가 발생한다.
왜일까 찾아봤더니 아래와 같은 글을 발견했다.
타입스크립트는 파일에 import문이나 export문이 없을 경우 이를 모듈로 보지 않고, 스크립트로 본다.
따라서 컴파일시 하나의 스크립트 태그 안에 합쳐지는데 이러면 두 변수가 같은 블록 스코프에 존재하는 것이 되므로 이러한 에러가 발생하는 것이다.
해결 방법은 아래와 같은 방법이 있다.
{compilerOptions:{"module": "NodeNext"}}
이렇게 해주면 require과 import둘 다 사용할 수 있게 된다.{"compilerOptions": {"moduleDetection":"force"}}
moduleDetection을 force로 수정하면 모든 파일을 모듈로 인식한다.나는 3번 방식을 사용했다.
https://www.totaltypescript.com/cannot-redeclare-block-scoped-variable