2.1 컴파일러
- 컴파일러가 소스 코드를 파싱해서 Abstract Syntax Tree 자료구조로 변환
- 이후 컴파일러는 AST를 바이트코드라는 하위 수준의 표현으로 변환함
- 바이트코드를 런타임이라는 다른 프로그램에 입력해 평가하고 결과 얻을 수 있음
- 타입스크립트에서는 컴파일러가 소스 코드를 JS 코드로 변환
- 타입스크립트 컴파일러는 AST를 만들어 결과 코드를 내놓기 전에 타입 확인 과정을 거침
- type checker: 코드의 타입 안전성을 검증하는 특별한 프로그램
- type cheker가 AST를 확인함, 이후 TSC가 TS AST -> JS 소스 코드로 변환
- TSC가 TS를 JS 코드로 컴파일할 때는 개발자가 사용한 타입 확인하지 않음
2.2 타입 시스템
- type system: type checker가 프로그램에 type을 할당하는 데 사용하는 규칙 집합
- 명시적 타입 시스템
- 어떤 타입을 사용하는지를 컴파일러에게 명시적으로 알려줌
- 자동으로 타입을 추론하는 타입 시스템
- TS는 개발자가 타입을 명시하거나 TS가 추론하도록 하는 방식 중 선택 가능
- 어노테이션을 이용하여 TS에 명시적으로 타입 지정 가능
- 어노테이션을 사용하지 않으면 TS가 알아서 타입을 추론함
- 자바스크립트 vs. 타입스크립트
- 타입은 어떻게 결정되는가?
- JS는 동적 타입 바인딩, TS는 정적 gradually typed 언어
- TS의 gradually typed 특성은 JS 코드를 TS로 마이그레이션할 때 유용 (점진적으로 타입 확인)
- 자동으로 타입이 변환되는가?
- JS는 O, TS는 대부분 X
- JS는 weak typed 언어
- JS의 암묵적 타입 변환으로 문제의 원인 추적 어렵고 코드 확장하기 곤란한 문제
- TS는 유효하지 않은 작업 발견하는 즉시 불평
- 타입 변환할 때는 항상 명시적으로 해야 함!
- 언제 타입을 검사하는가?
- JS는 런타임, TS는 컴파일 타임
- TS에서는 컴파일 타임에 코드의 타입 확인 (type checker가 AST 확인)
- 실수 방지 가능
- 에러는 언제 검출되는가?
- JS는 대부분 런타임, TS는 대부분 컴파일 타임
- JS는 런타임에 예외를 던지거나 암묵적 형변환 수행
- 프로그램 실행해야만 어떤 문제 있는지 확인 가능
- TS는 컴파일 타임에 문법 에러와 타입 관련 에러 모두 검출
2.3 코드 편집기 설정
- 코드 편집기
- VS Code 권장
- TSC 자체도 TS로 구현된 CLI 도구 이므로 TS를 실행하기 위해 Node.js 필요
- NPM을 이용하여 TSC와 TSLint 설치
- tsconfig.json
- 프로젝트 루트 디렉터리에 반드시 존재
- 어떤 파일을 컴파일하고, 어떤 JS 버전으로 방출하는지 등 정의
- tslint.json
- TSLint 설정 정의
- 탭을 사용할지, 공백을 사용할 지 등 결정
2.4 index.ts
- 프로젝트 빠른 설정
- ts-node
- typescript-node-starter
연습문제
'Books > TS 프로그래밍 ✔️' 카테고리의 다른 글
[타입스크립트 프로그래밍] 3장 - 타입의 모든 것 (0) | 2022.02.03 |
---|---|
[타입스크립트 프로그래밍] 1장 - 소개 (0) | 2021.12.23 |
댓글