타입스크립트를 설치하면 우리는 타입스크립트를 사용하기 위해 config 파일에 여러 내용들을 설정해줘야 합니다. 자주 사용하는 설정들엔 어떤 것들이 있는지 정리해봤습니다.
1 | { |
- include: 타입스크립트 파일이 어디에 위치하는지를 지정합니다. src 디렉토리와 그 하위 디렉토리에 있는 모든 TypeScript 파일을 포함하려면
["src"]
혹은["src/**/*]
로 작성할 수 있습니다. - compilerOptions: TypeScript 컴파일러에 대한 다양한 옵션 및 설정을 구성하는 데 사용됩니다.
- target: 컴파일되어야 하는 ECMAScript 대상 버전을 지정합니다.
- module: 생성된 JavaScript 코드에 사용할 모듈 시스템을 지정합니다. 일반적인 옵션에는 “commonjs”, “amd”, “es2015”, “es2020” 등이 있습니다.
- outDir: 컴파일된 JavaScript 파일의 출력 디렉토리를 지정합니다. 컴파일된 자바스크립트 파일은 dist폴더 내에 존재하게 됩니다.
- strict: 엄격한 유형 검사 옵션을 활성화합니다. 일반적인 실수를 포착하고 더 엄격한 유형 규칙을 적용하는 데 도움이 됩니다.
- esModuleInterop: CommonJS와 ES 모듈 간의 상호 운용성을 활성화하여 다른 모듈 시스템의 라이브러리와 모듈을 더 쉽게 사용할 수 있습니다.
- sourceMap: 컴파일된 JavaScript 파일과 함께 소스 맵 파일을 생성합니다. 소스 맵을 사용하면 컴파일된 코드를 원본 TypeScript 코드에 다시 매핑하여 더 쉽게 디버깅할 수 있습니다.
- resolveJsonModule: ‘true’로 설정하면 TypeScript 컴파일러가 JSON 파일을 TypeScript 코드의 모듈로 확인하고 가져올 수 있습니다.
- jsx: “jsx”: “react”를 설정하면 React 자체에서 제공하는 JSX 변환을 사용하고 싶다는 뜻입니다.
- lib: TypeScript 코드의 대상 플랫폼 또는 환경을 지정해야 합니다.
"lib": ["dom", "esnext"]
로 작성하면 DOM API에 접근할 수 있습니다.
🚀 esModuleInterop
NodeJS 패키지 중 하나인 Crypto를 사용할 때 import crypto from 'crypto'
로 import를 하게 되면
Module ‘“crypto”‘ has no default export.
라는 오류가 발생합니다.
crypto는 default export가 없다는 이야기인데 crypto의 기본 동작이 ESModule이 아니기 때문입니다. 이것을 해결하기 위한 첫 번째 방법은 import * as crypto from 'crypto'
입니다. 하지만 이렇게 쓰고 싶지 않다면 이때는 tsconfig.json에서 옵션을 설정해야 합니다.
👉🏻 이 때 사용하는 것이 esModuleInterop
tsconfig.json 파일에서 "esModuleInterop": true
로 옵션을 설정하면 ESModule의 구문을 사용할 수 있습니다.