compileOnSave
true / false (default false)
extends
상속할때 사용하는 키워드
type script 2.1 부터 사용가능
files , include , exclude
셋다 설정이 없으면 전부다 컴파일
1. files
->상대 혹은 절대 경로의 리스트 배열
-> exclude 보다 강하다2. include
-> exclude보다 약하다
-> *같은걸 사용하면, .ts / .tsx/ .d.ts 만 include (allowJS)3. exclude
-> </outDir/>은 항상 제외한다.
-> 설정안하면 4가지를 default로 제외한다.
- node-modules
- bower_components
- jspm_packages
- <"outDir">
compileOptions (@types)
TypeScript 2.0 부터 사용 가능해진 내장 type definition 시스템
아무 설정을 안하면 node_modules/@types라는 모든결로를 찾아서 사용typeRoots를 사용
-> 배열안에 들어 있는 경로들 아래서만 가져온다.type을 사용
->배열 안의 모듈 or ./node_modules/@types/안의 모듈 이름에서 찾아온다.
-> [] 빈 배열을 넣는 다는건 이 시스템을 이용 하지 않겠다는 것typeRoots 와 types를 같이 사용하지 않는다.
compileOption (target, lib)
target
1) 빌드의 결과물을 어떤 버전으로 할것인지를 결정한다.
2) 지정 하지 않으면 es3가 기본이다.
lib
1) 기본 type definition 라이브러리를 어떤 것을 사용할것인지를 결정한다.
2)lib를 지정하지 않으면
target -> es3: lib.d.ts 사용
target -> es5: dom, es6, scripthost 사용
target -> es6: dom, es6,dom.iterable, scripthost 사용
compileOptions (strict)
true로 표현 해야한다.
--noImplicitAny
1.타입스크립트가 추론을 실패한 경우 any가 맞으면, any라고 지정
2.아무것도 쓰지 않으면, 에러를 발생--noImplicitiThis
1.명시적이지 않게 any타입을 사용하여, this표현식에 사용하면 에러 발생
2. this에 대한 타입을 표현하지 않으면 noImplicitAny가 오류 발생
3.JS 에서는 매개변수 this를 넣으면 예약된 키워드라 SyntaxError발생
4.call/apply/bind와 같이 this를 대체하여 함수 콜을 하는 용도로 사용
5. this를 any로 명시적으로 지정하는것이 합리적이다.--strcitNullChecks
- null 및 undefined값이 모든 유형의 도메인에 속하지 않는다.
- 적용하지 않으면 모든 타입이 null,undefined값을 가질 수 있다.
- 적용하면 null, undefined값을 가지려면 union type으로
명시 해야한다.- any는 null, undefined값을 가질 수 있다.
--strictFunctionTypes
- 반환타입은 공변적이여야 한다.
- 인자 타입은 반공변적이다.
- 타입스크립트에서는 인자타입은 공변적이면서 반공변적이다.
- 위 문제를 해결하는 옵션이 strictFunctionTypes
--strictPropertyInitialization
- 정의되지 않은 클래스의 속성이 생성자에서 초기화 됬는지 확인
- 이 옵션을 사용하려면 --strictNullChecks를 사용 하여야 된다.
--strictBindCallApply
- bind, call, apply에 대한 더 엄격한 검사를 해준다.
--alwaysStrict
- 각 소스 파일에 대해 JS의 strict mode로 코드를 분석하고
"엄격하게 사용"을 해제 한다.