TopLevel Property
"complieOnSace": true
"extens": "./base.json"
만약에 files나 include 프로퍼티가 tsconfig안에 없으면 컴파일러는 모든 파일을 컴파일 할려고 함.
files에 세팅되어 있다면, exclude로 제외되어도 컴파일 됨.
glob 패턴
include로 세팅되어 있는 파일에는 영향을 미치지만
file에 세팅되어 있는 파일에는 영향일 미치지 못함
exclude 미설정시 (node_modules, bower_components, jspm_packages, outDir)를 default로 제외함
glob 패턴
exclude에 영향을 미치지 못함
-typeRoots
배열 안에 들어있는 경로들 아래서만 가져옴
-types
내장 type definition 시스템
배열 안의 모듈 혹은 ./node_modules/@types/ 안의 모듈 이름에서 찾아옴
빈 배열을 넣으면 시스템을 사용하지 않음
target
빌드의 결과물의 버전 지정
default : es3
lib
기본 type definition 라이브러리 지정
default : target의 버전에 따라 변경됨
ECMAScript feature
컴파일시 src나 루트폴더의 위치를 지정해줌
outFile
outDir
rootDir
엄격하게 type을
타입 추론에 의해 'any'로 판단되면 컴파일 에러를 발생시키는 옵션
구현자가 any로 사용하고 싶다면 any라고 명시해주어야 함
명시적이지 않게 any를 사용하여, this 표현식에 사용하면 에러 발생
즉 this에도 typing을 해야함
모든 타입에 자동으로 포함되어 있는 null과 undefined를 제거 해줌
반환 타입은 공변적, 인자 타입은 반공변적 but typescript에서 인자 타입은 공변적이면서 반공변적인데,
반공변적일때만 가능하도록 처리됨
정의되지 않은 클래스의 속성이 생성자에서 초기화되어있는지 확인(--strictNullChecks와 함께 사용)
즉, constructor에서 초기값을 할당해야 오류가 사라짐
만약 constructor를 사용하지 않고 async 같은 다른 함수로 initialize 하는 경우 !를 사용해서 할당을 할것을 명시해야 함
bind, call, apply에 대한 더 엄격한 검사 수행
JS의 strict mode로 코드를 분석하고, strict를 emmit 함
syntax error가 ts error로 나오고 컴파일된 JS파일에 use strict가 추가됨