ProgrammingLang/typescript

[typescript] 2. 개요

jinkwon.kim 2018. 12. 1. 15:50
728x90
반응형

[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

    - 비주얼 스튜이오 코드 입니다. 하위 모든 레이어를 고려해서 동작하는 최종 응용단계 어플리케이션 입니다.

 

728x90
반응형