컴파일러는 특정 프로그래밍 언어가 정적 언어로서의 정체성을 유지할 수 있게 하는 도구
정적언어(=컴파일 언어) -> 기계어로 변환이 되어야함
동적언어(=인터프리터 언어) -> 엔진이 코드를 한 줄씩 실행하면서 동적으로 해석
=> javascript는 동적언어기때문에 기계어로 변환될 필요 없음
tsc --init
타입스크립트를 초기화하는 명령어
tsconfig.json이 생성됨
tsc index.ts
index.ts 파일을 컴파일하는 명령어
tsc src/*.ts
src 디렉토리 안에 있는 모든 Typescript파일을 컴파일하는 명령어
tsc index.js --declaration --emitDeclarationOnly
@types 패키지를 위한.d.ts 파일 생성을 하는 명령어
TypeScript로 작성된 모듈이 아니라 JavaScript로 작성된 모듈에 타입 선언을 제공할 때 유용하게 쓰임
tsc --init시 생성
프로젝트의 컴파일 옵션및 입력파일들을 정의하는데 사용
compilerOptions - target
어떤 Javascript 버전으로 변환할지 정하는 옵션
es5: CommonJS 버전으로 컴파일
es2016(=es7): ES2016 버전으로 컴파일
-> 최신 브라우저는 보통 ES2016으로 설정하는걸 추천
compilerOptions - module
TypeScript 파일을 컴파일한 후 생성되는 JavaScript 모듈의 형식을 지정
모듈을 가져오고 내보내는 방식을 결정하는 옵션
compilerOptions - outDir
컴파일된 Javascript 파일이 저장된 출력 디렉토리를 지정
compilerOptions - strict
엄격한 타입 검사 옵션을 모두 활성화하는 옵션
true로 하는걸 권장. 아래의 옵션들이 true로 설정됨
strictNullChecks
-잠재적으로 Null값에 대해 엄격하게 확인
strictFunctionTypes
strictBindCallApply
strictPropertyInitialization
noImplicitAny
-컴파일러가 자동으로 any타입을 부여하지 않게함
noImplicitThis
alwaysStrict
compilerOptions - sourceMap
컴파일된 Javascript 파일에 대한 소스맵을 생성하는 옵션
개발환경에서는 true 권장
include , exclude 옵션
tsc가 컴파일을 할 때 포함하거나 제외할 파일이나 디렉터리를 지정하는 옵션
Javasciprt 라이브러리도 Typescript 코드에서 사용할 수 있게 만들어줌
이미 작성된 다양한 JavaScript 라이브러리와 호환성을 유지를 위해 필요
TypeScript는 @types 라이브러리를 통해 외부 라이브러리에 대한 타입 정보를 제공
.d.ts 파일은 TypeScript 타입 정의 파일
이걸 통해 아래의 것들이 가능해짐
- 외부 라이브러리의 함수 타입 정보
- 외부 라이브러리 클래스 타입 정보
- 외부 라이브러리 객체 타입 정보
- 외부 라이브러리의 타입 추론
즉 기존 라이브러리에대한 .d.ts이 제공되면 기존의 Javascript 라이브러리를 Typescript에서 그대로 사용할수 있게 해줌