<aside> 💡 타입스크립트는 모든 ts파일을 전역 모듈로 보기 때문에 서로 다른 파일에서 const a = 1; 똑같이 쓰면 같은 공간에 있다고 간주해서 에러

해결방법은

  1. 파일 내에 export {}; 를 한 번 이상 작성 하면 해당 파일은 독립된, 격리된 모듈로 인식

  2. tsconfig.json에 옵션추가하기 "moduleDetection": "force” export {} 키워드나 import 키워를 자동으로 넣어주는거

</aside>

해당 명령어 입력하면 타입스크립트 컴파일러 생성 파일이 생김

tsc --init

Untitled

tsconfig.json

{
  "compilerOptions": {  
  // 컴파일 과정에서 해딩 타겟에 버전에 맞게 컴파일해줌
  // ex) ES5는 화살표함수 없어서 화살표함수가 함수 표현식으로 변해서 컴파일 됨 
    "target": "ESNext",
  // 모듈 시스템을 지정해줌 (ex, export와 import 기능)
    "module": "ESNext",
  // 컴파일 결과 생성될 javascript파일들이 어디에 위치했으면 좋겠는지 정함
    "outDir": "dist",
  // typescript 컴파일러가 타입 검사할 때 얼마나 엄격하게 검사할지 결정하는 옵션
    "strict": true,
  // null 타입이 아니여도 null을 넣을 수 있게 해주는 옵션
    "strictNullChecks": false,
  // 각 ts파일들을 독립적인 모듈로 보게 하냐 안하냐를 정하는 옵션
    "moduleDetection": "force",
  },
  // ts-node의 모듈이 CommonJS로 되있기에 esm으로 바꾸면 ts-node 사용가능
  "ts-node":{
    "esm" : true
  },
  // tsc만 입력해도 특정 폴더안에 모든파일을 컴파일 하도록 도와줌 
  "include" : ["src"]
}
// ts-node의 모듈이 CommonJS로 되있기에 esm으로 바꾸면 ts-node 사용가능
  "ts-node":{
    "esm" : true
  },

Untitled