본문 바로가기
Books/TS 프로그래밍 ✔️

[타입스크립트 프로그래밍] 2장 - 타입스크립트: 3,000미터 상공에서 내려다보기

by Aaron-Kim 2022. 2. 3.

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

연습문제


[Source Code] TS 프로그래밍 Ch02. TS: 3,000미터 상공에서 내려다보기

반응형

댓글