1. 블록 범위 변수를 다시 선언할 수 없습니다
타입스크립트 실습 도중 TS 파일을 JS로 변환했더니 블록 범위 변수 'a'을(를) 다시 선언할 수 없습니다라는 문구와 함께 오류가 발생하였습니다. 분명 변수를 다시 선언한 적이 없는데 왜 이런 오류가 나는지 검색해보니 원인은 다음과 같았습니다.
자바스크립트에선 JS 파일 각각이 하나의 모듈로 인식되므로, 서로 다른 JS 파일에 동일한 이름의 변수를 선언할 수 있습니다. 그러나 타입스크입트는 모든 TS 파일을 하나의 모듈로 보기 때문에 비록 다른 파일이라 하더라도 동일한 변수의 이름을 선언할 수 없다고 합니다.
이를 해결하는 방법은 파일 끝에 export {};코드를 추가하여 해당 파일을 독립된 모듈로 인식하도록 하거나, tsconfig.json 파일에"moduleDetection": "force"코드를 추가해주면 됩니다.
참고 자료: https://velog.io/@handaehee93/TS-Error-블록-범위-변수-다시-선언할-수-없습니다
2. ts-node 명령어로 타입스크립트 파일 실행이 안됨
타입스트립트를 한 번에 실행하는 방법으로 ts-node 명령어를 사용하였는데 아래와 같은 오류가 발생하였습니다.
구글링도 하고, ChatGPT에도 물어보면서 문제를 해결하려 노력했는데, 그럼에도 에러가 계속 발생했습니다.
강의 실습 중 발생했던 문제라, 다행이도, QnA 게시판을 살펴보고 난 후 문제를 해결할 수 있었습니다. 알고 보니 ts-node는 Node 20 버전 이상에서는 더 이상 동작하지 않는다고 합니다. 대신 tsx를 사용하면 정상적으로 동작이 됩니다. 사용법도 동일합니다.
(간단한 타입스크립트 에러를 만날 때마다 계속 추가하도록 하겠습니다)