Tech/Typescript

[Typescript] '파일 이름.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module.

lonnie(동현) 2022. 10. 25. 09:33

 타입스크립트로 작업을 진행하면서 아래와 같은 오류가 발생해서 간단하게 정리해보고자 한다.

'파일 이름.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module.

 해당 오류에 따르면, isolatedModules가 적용되어 있는 상태에서는 파일이 전역 스크립트 파일로 간주되기 때문에 컴파일될 수 없다고 말한다.

  • 그래서 import, export 구조를 만들어 주거나 export {}를 넣어주어서 모듈로 만들어 주거나,
  • isolatedModules 를 tsconfig.json에서 false로 만들어주면 된다.

그러면 여기서, isolatedModules 이 왜 필요한 것일까가 궁금해서 타입스크립트 공식 문서를 찾아 보았다.

 While you can use TypeScript to produce JavaScript code from TypeScript code, it’s also common to use other transpilers such as Babel to do this. However, other transpilers only operate on a single file at a time, which means they can’t apply code transforms that depend on understanding the full type system. This restriction also applies to TypeScript’s ts.transpileModule API which is used by some build tools.

 These limitations can cause runtime problems with some TypeScript features like const enums and namespaces. Setting the isolatedModules flag tells TypeScript to warn you if you write certain code that can’t be correctly interpreted by a single-file transpilation process.

 It does not change the behavior of your code, or otherwise change the behavior of TypeScript’s checking and emitting process.

 Some examples of code which does not work when isolatedModules is enabled.

 요약해보면, 타입스크립트는 한 번에 하나의 파일에서만 작동하므로 전체 타입 시스템을 이해하는데 의존하는 코드 변환에 적용될 수 없고, 이러한 제한들은 런타임 문제를 발생시킨다.

 따라서, isolatedModules을 설정하는 것을 통해서, 단일 파일 변환 프로세스에서 올바르게 해석할 수 없는 특정 코드를 작성할 경우 경고해주게 된다. 여기서 올바르세 해석할 수 없는 특정 코드는 모듈이 아닌 코드를 말하는 것으로 볼 수 있다.

728x90
반응형