타입스크립트가 컴파일 할 때 어떤 파일과 어떤 방식으로 컴파일 할지 방식을 규명해둔 것이다.
compileOnSave
extends
CompileOptions
files
include
exclude
references
파일을 컴파일하면 저장하겠다.
true/false (default false)
"extends: "부모 파일"
어떤 설정이 있는 부모 파일의 설정을 상속 받겠다. (부모 설정들)
npm install --save-dev @tsconfig/deno(부모 설정 이름)
셋 다 설정이 없으면 전부 다 컴파일 하려고 한다.
어떤 파일, 디렉토리를 컴파일할지 규정하는 프로퍼티이다.
상대 혹은 절대 경로의 리스트 배열이다.
exclude 보다 세다.
glob pattern (like .gitignore)
exclude 보다 약하다.
* 같은걸 사용하면, .ts / .tsx / .d.ts 만 include (allowJS)
설정하지 않으면 node_modules, bower_components, jspm_packages, <outDir> 를 default로 제외한다.
<outDir> 은 include에 있어도 항상 제외한다.
추가적으로 다른 설정을 할 때 주로 사용한다.
TS 2.0부터 사용 가능해진 내장 type definition 시스템
아무 설정 안하면?
node_modules/@types 라는 모든 경로를 찾아서 사용
typeRoots 사용하면?
배열 안에 잇는 경로들 아래서만 가져온다.
types 사용하면?
* typeRoots와 types는 같이 사용하지 않는다.
target
default: "ES3"
어떤 런타임에서 실행하게 될 지 결정해주는 요소
빌드의 결과물을 어떤 버전으로 할 것이냐를 결정한다.
lib
기본 type definition 라이브러리를 어떤 것을 사용할 것이냐를 결정한다.
최종적으로 실행하고자 하는 기본 타입들을 결정해주는 요소
타겟팅 당한 버전에 따라 기본이 정해진다.
outDir
이 dir에 컴파일된 최종 결과물이 저장된다.
outFile
하나의 js 파일로 만들어준다.
rootDir
rootDir을 지정해준다. 기본은 가장 상위 폴더이다.
엄격하게 타입을 확인하는 옵션을 가능하게 할 지 결정한다.
strict 를 true
로 켜야하는 이유?!
--noImplicitAny
명시적이지 않게 any 타입을 사용하여, 표현식과 선언에 사용하면 에러를 발생한다.
타입스크립트가 추론을 실패한 경우, any가 맞으면 any라고 지정
suppressImplicitAnyIndexErrors
--noImplicitThis
명시적이지 않게 any 타입을 사용하여, this 표현식에 사용하면 에러를 발생한다.
첫 번재 매개변수 자리에 this를 놓고, this에 대한 타입을 어떤 것이라도 표현하지 않으면 오류를 발생한다.
--strictNullChecks
이 모드에서는 null 및 undefined 값이 모든 유형의 도메인에 속하지 않으며, 그 자신을 타입으로 가지거나 any일 경우에만 할당이 가능하다.
가지려면 unio type을 이용해서 직접 명시해야한다.
* 예외는 undefined에는 void 할당 가능하다.
이 모드를 적용하지 않으면 모든 타입이 null, undefined 값을 가질 수 있게 된다. (큰 오류)
사용하려는 함수를 선언할 때부터 리턴 값에 정확한 타입을 지정하려는 노력을 기울여야 한다.
--strictFunctionTypes
함수 타입에 대한 bivariant 매개변수 검사를 비활성화한다.
반환 타입: 공변적
인자 타입: 반공변적
근데 타입스크립트에서는 인자 타입이 공변적이면서 반공변적이다. 이 문제를 해결하는 옵션이다.
--strictPropertyInitialization
정의되지 않은 클래스의 속성이 생성자에서 초기화되었는지 확인한다.
이 옵션을 사용하려면 --strictNullChecks
을 사용하도록 설정해야한다.
--strictBindCallApply
bind, call, apply에 대한 더 엄격한 검사를 수행하는 옵션이다.
--alwaysStrict
각 소스 파일에 대해 JS의 strict mode로 코드를 분석하고, "엄격하게 사용"을 해제한다.