1. 타입스크립트란 무엇인가?
[Wonjong Oh] TypeScript #1 타입스크립트란 무엇인가?
1) 타입스크립트란?
- 마이크로소프트(MS)가 개발하고 관리하는 오프소스 프로그래밍 언어
- 어떤 브라우저, 호스트, 운영체제에서도 동작
- 자바스크립트의 상위 집합 > ECMA의 최신 표준을 충분히 지원
- ECMA 스크립트란?
- Ecma International이
ECMA-262 기술 규격
에 따라 정의하고 있는, 표준화된 스크립트 프로그래밍 언어
- 자바스크립트를 표준화하기 위해 만들어짐
- ES7 이하의 표준을 포함하며, '타입'이라는 특징을 가짐
- 타입스크립트의 장점은 '정적 타입 언어(static type language)'라는 것!
- 자바스크립트의 단점인, 타입 안정성 보장을 위해 만들어짐
2) 타입스크립트의 특징
- ES6 모듈 및 네임스페이스
- ES6에서 제공하는
모듈 선언
과 모듈 호출 방식
을 지원
네임스페이스
를 지원 → 라이브러리 단위의 모듈 구성에 유리
- 클래스가 커지고 개수가 많아질 경우, 유사한 기능의 클래스를 그룹으로 구분지을 필요가 생김
- 네임스페이스(Namespace): 개체를 구분할 수 있는 범위. 일부 프로그래밍 언어는 범위 내에 변수와 함수를 조직한다.
- 클래스와 인터페이스
- ES6의 클래스 특징을 받아들이고 인터페이스 특징을 지원 → 완전한 객체지향 프로그래밍 환경 제공
- 전통적 객체지향 언어에서 사용하던 class, interface, extends 키워드 사용 가능
- 기존 언어(자바)와의 차이점은 다음과 같다.
다중 생성자
를 선언할 수 없다.
디폴트 초기화 매개변수
, 선택 매개변수
를 선언할 수 있다.
- 타입 시스템
- 타입 시스템을 지원 → 타입 지정을 통해 (엄격한 타이핑이 적용되어) 타입 안정성을 확보!
- 자바스크립트의 타입을 확장
- 타입 어노테이션을 이용해 변수에 타입을 선언하는 것이 가능
3) 코어 타입스크립트 컴파일러
언어 변환 기능
을 수행하는 아키텍처
- 파서(parser)
- 읽어 들인 소스 코드를 해석 > 구문 트리 생성 > 구문 트리를 해석> 추상 구문 트리 생성
- 바인더(binder)
- 인터페이스 / 모듈 / 함수와 같은 모듈에 선언이 있을 경우, 이를 심벌(Symbol)로 보고 심벌 간의 규칙을 정의
- 타입 체커(type checker)
- 타입이 선언된 구문을 분석하고, 타입이 적절한지 체크
- 에미터(emitter)
- 입력된 *.ts 파일을 *.js, *.d.ts, *.js.map 유형의 파일로 생성
- 전처리기(pre-processor)
- 타입스크립트 파일에 선언된 import문 혹은 외부 호출 선언이 있을 때, 참조 가능한 파일을 가져와 정렬된 파일 목록을 생성
- 파일 목록 생성 시, .d.ts.보다 .ts 파일을 우선적으로 호출
- 즉, 컴파일러는 1) 전처리기가 생성한 파일 목록을 이용해 2) 파일을 호출하고 3) 컴파일을 수행한다.