Web
[TypeScript] tsconfig.json 알아보기
hoonylab
2022. 11. 23. 18:56
728x90
반응형
타입스크립트 형태로 프로젝트 생성을 하게 되면 root path 에 tsconfig.json 이라는 파일이 생성되어있을것이다.
이 파일의 목적은 타입스크립트 ts 파일들을 .js 파일로 변환할 때 어떻게 변환할 것인지 세부설정하기위한 설정파일이다. 기본적으로 생성되어있는 설정값으로 진행해도 되지만 어떠한 설정값이 있는지 알아볼것이다.
필자는 CRA(create-react-app) 을 통해서 타입스크립트용으로 프로젝트를 생성할때 tsconfig.json 기준으로을 시작을 한다.
$ npx create-react-app ts_demo --template typescript
을 입력시 리액트 프로젝트가 생성된다.
위처럼 ts_demo 디렉토리를 가보면 tsconfig.json 가 생성되있을 것이다.
// 기본적으로 생성되는 tsconfig.json
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": [
"src"
]
}
compilerOptions: ts 파일을 js로 컴파일하기 위한 설정값을위한 object
- target: 어떤 자바스크립트 버전으로 변경할지 설정하는 부분 (es5, es6, esnext 등 있음)
- lib: 컴파일시 포함되어야하는 라이브러리 목록 (예를들어 async -> Promise 변환하기 위해 필요)
- allowJs: 말그대로 js 허용할지 묻는 속성. 컴파일할때 자바스크립트 파일 포함되도 되는지 설정값
- skipLibCheck: 정의파일(*.d.ts 확장자를 가진 파일)의 타입 확인을 skip 여부
- esModuleInterop: js 문법중 import 와 require 호환성을 위한 설정값. true 라면 CommonJS 모듈을 ES6 모듈 기준으로 가져올수 있게 된다.
- allowSyntheticDefaultImports: 타입확인시 default export이 아닌 모듈에서도 default import 가 가능 여부 값.
- strict: 모든 엄격한 타입 검사 옵션을 활성화 여부 값.
- forceConsistentCasingInFileNames: 파일명에 대소문자 구분하지 않아도 되는지 여부 값. true 이면 대소문자 구분없이 import 시 대소문자 구분없이 사용가능. ex) import Api from 'Api' == import Api from 'api'
- noFallthroughCasesInSwitch: 스위치문 사용지 코드 이상 감지 활성화 여부. case 에 break 없으면 이상감지로 오류발생.
- module: 모듈설정. 무슨 import 문법을 사용할것인지 설정값 (commonjs, amd, es2015, esnext 등 있음)
- moduleResolution: module을 import 하거나 export 시 처리방식 설정값.
- resolveJsonModule: json 파일 모듈을 가져오게 할지 여부 설정값.
- isolatedModules: 타입스크립트 경우 import/export 없는경우 파일을 레거시 취급하여 이러한 파일들을 전역 네임스페이스 병합하는데, true 일경우 컴파일시 export {} 를 붙여서 모듈로 생성하도록 해준다.
// temp.ts
const temp = 1
console.log(temp)
-----------------------------------------------
// 컴파일시
const temp = 1
console.log(temp)
export {} // <- 붙여서 하나의 모듈로 만들어준다.
- noEmit: true시에는 ts 파일을 오류확인만 하고 파일은 생성하지 않음(js 파일 생성안함.)
- jsx: 리액트파일 사용 여부 설정값
728x90
반응형