[타입스크립트 컴파일 설정 ]- 정리
tsconfig.json은 타입스크립트를 자바스크립트로 변환할 때의 컴파일 설정을 한 파일 내에서 정의 해놓는 파일이라고 보면 된다.
tsconfig.json 이 존재함으로, vscode에게 우리가 타입스크립트로 개발한다는 것을 인식하게 할 수 있다.
>> 현재 파일에 tsconfig.json 파일이 없어도 상위 폴더에 존재한다면, 그것을 확인하여 컴파일 한다.
tsconfig의 최상위 속성 : compilerOptions, files, include, exclude, compileOnSave, extends
--init 으로 생성한 파일에 미리 써져있는 것은 tsc명령어의 옵션들 (compilerOptions)이다.
> 이는 기본적인 설정으로 다른 것을 굳이 추가시키지 않아도 대부분의 것들을 실행 시킬 수 있도록 설정해놓았고,
조절하지 않아도 컴파일 하는데에 불편함이 전혀없다. (어떤 상황에서 불편함이 생길까...?)
1) target
2)lib
3)module
4) JavaScript Support :TypeScript 프로젝트에서 JavaScript 파일도 사용할 수 있도록 하는 설정이다.
allowJs: true이면 JavaScript 파일들도 타입스크립트 프로젝트에서 import 될 수 있다. (자바스크립트를 타입스크립트로 바꾸는 프로젝트라면 곤란하다 >> 기본적으로 타입스크립트는 .js 를 허용하지않는다. 그 때 그 곤란함을 해결하기 위한 옵션)
5)OutDir :기본적으로 컴파일을 진행하면 .ts와 같은 경로에 .js 결과물을 생성하는데, outDir 옵션으로 경로를 수정하여 컴파일된 js 파일들을 담을 폴더를 지정해줄 수 있다.
...
Strict
타입스크립트의 각종 타입 체킹 동작을 전부 활성화한다.
사실상 이 옵션을 쓰지않는것은 곧 타입스크립트를 쓰지 않는 다는 것과 같다. 따라서 기본으로 활성화 되어 있다.
이 프로퍼티를 true로 지정하면 strict mode family 프로퍼티들을 전부 true로 지정하는 것과 동일하다.
만일 사소한 부분에도 너무 지나치게 빨간줄을 긋는게 불편하다면, 선택적으로 몇 개의 strict mode family 프로퍼티를 false로 지정하는 식으로 설정하면 된다.
[strict mode family 프로퍼티들]
- alwaysStrict 프로퍼티 :
- strictNullChecks 프로퍼티 : strickNullChecks : false => 모든 타입에 null, undefined값을 할당 가능해진다. (디폴트 : any = null, undefined / void : undefined)
- strictBindCallApply 프로퍼티 :
- strictFunctionTypes 프로퍼티 : false로 하면 반공병성을 끌수 있다. >> 서브타입을 신경쓰지 않고 프로젝트 가능
- strictPropertyInitialization 프로퍼티 :
- noImplicitAny 프로퍼티 :
- noImplicitThis 프로퍼티 :
그 외의 전역 속성을 확인하자.
1. files
files 전역 속성은 컴파일할 대상 개별 파일들을 담은 리스트(배열) 이다.
프로그램에 포함하고 싶은 파일들의 목록을 지정한다. (파일 확장자까지 정확히 작성해줘야 한다)
files는 exclude보다 우선순위가 높아서 특정 파일을 지정해서 컴파일 할때 쓰인다.
2. include / exclude
include / exclude는 컴파일할 경로, 파일들과 혹은 컴파일 제외할 대상을 경로와 파일들을 배열로 정할 수 있다.
include는 files 속성과는 달리 exclude보다 약해 include에 명시되어 있어도 exclude에 의해 제외된다.
exclude는 아무 설정을 하지 않아도 node_modules, bower_components, jspm_packages, outDir를 기본으로 제외한다.
+) 와일드 카드 패턴을 사용할 수 있다. (.ts .tsx. .d.ts 를 지원 ++ 하지만 allowJS: true 로 되어있다면 .js, .jsx 확장자 까지도 지원)
* : 해당 디렉토리에서 파일 검색
** : 하위 디렉토리에서도 파일 접근 가능
? : 해당 디렉토리 안의 파일의 이름 중에서 한 글자라도 맞으면 접근 가능
+) extends
extends는 다른 tsconfig 설정들을 가져와 쓸때 사용되는 옵션이다.
다른 파일의 속성 설정이 현 파일의 포맷과 맞으면 가져와서 사용할 수 있다.
"extends" : "./otherconfig/base" // otherconfig/base.json 파일 속성 설정 가져오기