[Typescript] 2. 개요
1. Typescript 란?
- 마이크로소프에서 개발하고 관리하는 오픈소스 프로그래밍 언어이다.
- 어떤 브라우저나, 호스트, 운영체제에서도 동작합니다.
- 자바스크립트의 상위 집합으로써 ECMA스크립트의 최신 표준을 충분히 지원합니다.
- 자바스크립트의 문법을 사용 할 수 있습니다.
- ECMA표준에 대한 컴파일도 지원합니다.
- 변수나 함수등에 명시적으로 타입을 추가할 수 있게 해 타입 안전성을 높였습니다.
이것 때문 typescript라고 불리웁니다.
2. Typescript VS JavaScript
항목 |
typescript |
javascript(ES6) |
언어 타입 |
정적언어 |
동적 언어 |
컴파일 여부 |
필요 |
불 필요 |
타입 존재 | 존재 | 미 존재 |
class | 지원 (키워드 : class) | 지원 (키워드 : class) |
인터페이스 | 지원 (키워드 : interface) | 미 지원 |
인터페이스 구현 | 지원 (키워드 : implements) | 지원 |
상속 | 지원 (키워드 : extends) | 지원 (키워드 : extends) |
생성자 | 지원 (키워드 : constructor(){}) | 지원 (키워드 : constructor(){}) |
3, typescript 실행 과정
- typescript 코드를 TSC를 통해서 JavaScript로 변환 이때 타입 검사를 수행한다.
- JavaScript 코드를 node 를 통해서 실행하여 process로 만든다.
* 결론 : Typescript는 단지 JavaScript를 보완하는 언어일 뿐이다.
4. Typescript에서 타입을 제어 하는 방법 (타입 시스템)
- 타입 시스템은 JavaScript의 타입을 확장하고 타입 어노테이션(type annotation)을 이용해서 변수에 타입을 선언
할수 있게 합니다.
- 타입 지정이 이루어지면 변수는 엄격한 타이핑이 적용되 타입 안전선을 확보합니다.
- 아래 코드에서는 strVar 에는 문자열만 들어와 합니다. 그렇지 않으면 컴파일시 에러가 발생 합니다.
- typescript 컴파일 과정
- 위 과정 떄문에 JavaScript 에서 타입을 검사하는 코드가 빠지게 되므로 JavaScript의 성능을 높일 수 있습니다.
5. Typescript 아키텍쳐
- 출처 : https://github.com/Microsoft/TypeScript/wiki/Architectural-Overview
1) Core TypeScript Compile
- 언어 변환을 수행 합니다.
- 파서, 바인더, 타입 체커, 에미터 , 전처리기로 구성되어 있습니다.
2) Language Service
- 언어 서비스는 코드를 컴파일해 도움말이나 코드의 포매팅, 코드 색상 지정 같은 편집기에 필요한 기능을 제공
합니다.
3) Standalone TS Compiler
- typescript 코드를 javascript로 변경해주는 트랜스파일러(Transpiler),
* 트랜스파일러 ?
- 한 언어의 소스코드를 비슷한 추상화 수준의 다른 언어로 바꾸는것
4) VS Shim
- 모른겞음...
5) tsserver
- 컴파일러와 언어 서비스 같은 하위레이어를 래핑해 JSON 형식을 통해 외부에 정보를 노출 할수 있게 합니다.
- typescript 개발환경이므로 typescript를 이용한 응용 개발에서는 직접 다룰 일은 없습니다.
6) VS Managed Language Service
- 모르겠음.
7) Editors
- 비주얼 스튜이오 코드 입니다. 하위 모든 레이어를 고려해서 동작하는 최종 응용단계 어플리케이션 입니다.
'ProgrammingLang > typescript' 카테고리의 다른 글
[typescript] 6. 연산자 와 디스트럭쳐링(destructuring) (0) | 2018.12.05 |
---|---|
[typescript] 5. 제어문 (0) | 2018.12.05 |
[typescript] 4. typescript 기본 타입과 변수 선언 (0) | 2018.12.04 |
[typescript] 3. 개발 환경 구축 및 테스트 프로젝트 (0) | 2018.12.01 |
[typescript] 1. 설치 (0) | 2018.12.01 |