• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

tsconfig.json 설정 옵션

24.04.04 12:28 작성 24.04.04 13:44 수정 조회수 88

0

안녕하세요, 강의 정말 잘 듣고 있습니다. 핵심적인 부분을 쉽게 설명해주셔서 타입스크립트에 적응하는 데 도움을 많이 받고있고, 정말 감사드립니다.

질문드리고 싶은 건 tsconfig.json 옵션에 대해서입니다. 강의에서 설명해주신 옵션들 외에도 다른 옵션들이 있고, 프로젝트마다 조금씩 다르게 사용하게 되잖아요.

moduleDetection은 각 파일에 모듈 시스템 키워드(export, import)를 최소 하나 이상 사용해 해당 파일을 전역 모듈이 아닌 로컬(독립) 모듈로 취급되도록 만든다고 강의에서 설명해주셨는데요.

이번에 isolatedModules라는 옵션을 알게 되었는데, 모듈을 독립적으로 컴파일하는 것을 강제한다고 하더라구요.

moduleDetection은 모듈 시스템 키워드를 사용해서 모듈을 독립적으로 취급되도록 하고, isolatedModules는 모듈 시스템 키워드를 자동으로 사용할 수 있게 해주지는 않지만, 얼핏 보기에 두 옵션을 사용했을 때 기대할 수 있는 효과가 비슷하다고 보이는데요.

제가 이해한 내용이 맞는지, 혹시 이에 대해서 추가적인 내용을 알려주실 수 있으신지 궁금해서 질문을 드리게 되었습니다.

좋은 강의 준비해주셔서 다시 한번 감사합니다!

답변 2

·

답변을 작성해보세요.

0

안녕하세요 이정환입니다.

네 우선 말씀해주신대로 isolatedModules 옵션은 모듈을 독립적으로 컴파일하는 것을 강제합니다.

그래서 TS 5.0 버전 이하에서는 isolatedModules 옵션이 켜져있을 때에는 파일 내에 export나 import 키워드가 없으면 오류를 발생시켰었습니다. 독립적인 모듈로 컴파일 되어야 하는데 export나 import 키워드가 하나도 없으면 독립적인 모듈로 인식되지 않기 때문입니다.

그러나 TS 5.0 버전 이후로는 isolatedModules 옵션을 켜도 export나 import 사용을 강제하지 않도록 변경되었습니다 ㅠㅠ 따라서 우리가 실습을 위해 원하는 목적을 달성할 수 없게 변경되었어요

그러나 moduleDetection 옵션은 export나 import 키워드가 포함되어 있지 않을 경우 자동으로 빈 export를 추가해주기에 우리가 원하는 목적을 이루기 훨씬 쉬운 옵션이 되었습니다. 그래서 강의중에는 moduleDetection 옵션을 사용하도록 안내드리고 있어요

여담으로 사실 강의는 isolatedModules 옵션을 이용하는 쪽으로 처음에는 제작이 되었었지만, 강의 제작 도중에 TS 5.0 버전이 업데이트 되는 바람에 처음부터 다시 찍어야 하는 해프닝이 있기도 했습니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.06

안녕하세요, 인프런 AI 인턴입니다.

님이 질문하신 moduleDetectionisolatedModules 옵션에 대해 설명드리겠습니다.

먼저 moduleDetection 옵션 같은 경우, TypeScript 공식 문서나 관련 자료에서는 직접적으로 언급된 바 없습니다. 일반적으로 TypeScript에서 모듈 시스템을 사용할 때는 파일 내에서 importexport 구문을 사용함으로써 해당 파일을 모듈로 인식시킵니다.

반면, isolatedModules 옵션은 TypeScript 파일을 독립적으로 컴파일할 때 사용됩니다. 이 옵션은 각 파일을 별개의 모듈로 컴파일하는 방식으로 작동하여, 전체 프로젝트의 컴파일 흐름에 영향을 주지 않도록 합니다. 특히 Babel 같은 다른 JavaScript 트랜스파일러와 함께 TypeScript를 사용하는 경우 유용합니다. isolatedModules 옵션을 사용하면 TypeScript는 각 파일을 분리하여 처리하므로, 전체 프로젝트의 타입 시스템을 완전히 파악하지 못하는 경우가 있어, 특정 타입 검사 오류를 놓칠 수 있습니다.

결론적으로, moduleDetection 옵션에 대한 직접적인 설명을 드리기 어렵고, isolatedModules는 파일을 독립적으로 컴파일하도록 강제하는 옵션으로, 트랜스파일링 시 효율성을 높이기 위해 사용되지만, 전체적인 타입 안정성을 보장하기 어렵다는 점을 인지하고 사용해야 합니다.

타입스크립트에 대한 깊은 이해를 위해 계속 학습하는 자세가 정말 멋집니다. 계속해서 궁금한 점이 있다면 언제든지 질문해 주세요.

혹시나 이 답글을 보고 오해하시는 분이 계실까봐 추가로 남깁니다.

인프런 AI 인턴에는 TS 5.0 버전의 내용이 포함되지 않은것으로 보이네요

현재 TS에는 moduleDetection 옵션이 다음과 같이 지원됩니다.

https://www.typescriptlang.org/tsconfig#moduleDetection