TS/[책] 타입스크립트 프로그래밍

2장. 타입스크립트: 3000미터 상공에서 내려다보기

배워도끝이없네 2021. 11. 26. 04:39

타입스크립트를 사용하는이유?

  • 타입 안전성을 지키기 위해서
    • 타입 안전성이란 타입을 이용해 프로그램이 유효하지 않은 작업을 수행하지 않도록 방지하는 것이다.
    • 타입스크립트는 에러를 알려주는 시점이 편집기에 코드를 입력하는 순간이기 때문에 에러를 검출하기에 용이하다.

 

컴파일러 

  • 프로그램은 프로그래머가 작성한 텍스트파일을 컴파일러라는 프로그램이 파싱하여 추상 문법 트리(AST)라는 자료구조로 변환한다. (파싱)
  • 그러고 다시 AST를 바이트코드라는 하위 수준의 표현으로 변환한다. (컴파일)
  • 바이트코드가 만들어지면 런타임이라는 프로그램에 바이트코드를 입력해 평가하고 결과를 얻는다.
  • 타입스크립트가 다른언어와 다른점은 컴파일러가 코드를 바이트코드 대신 JS코드로 변환한다는 점이다.
  • 타입스크립트 컴파일러는 AST를 만들어 결과코드를 내놓기 전에 타입 확인을 거친다.

 

타입 시스템

  • 타입 검사기가 프로그램에 타입을 할당하는데 사용하는 규칙 집합.
  • 보통 두가지로 분류한다
    • 어떤 타입을 사용할지 컴파일러에게 명시적으로 알려주는 타입
    • 타입시스템과 자동으로 타입을 추론하는 타입.
  • 어노테이션은 'value:type' 형태로 쓰이며 어노테이션을 사용하지 않으면 타입스크립트가 알아서 타입을 추론한다.
  • let a: number = 1 // a는 number
    let b: string = 'hello' // b는 string
    let c: boolean[] = [true, false] // c는 boolean 배열
    
    ----------------------------------
    
    let a = 1; // number
    let b = 'hello' // string
    let c = [true, false] // array
  • 타입스크립트가 타입을 추론하도록 두는것이 코드를 줄일 수 있는 방법이므로 보통 어노테이션은 생략한다.

 

타입 시스템 기능 자바스크립트 타입스크립트
타입 결정 방식 동적 정적
타입이 자동으로 변환되는가? O X(대부분)
언제 타입을 확인하는가 런타임 컴파일 타임
언제 에러를 검출하는가? 런타임(대부분) 컴파일 타임(대부분)

 

타입은 어떻게 결정되는가?

  • 타입스크립트는 점진적으로 타입을 확인하는 언어이다.
  • 점진적 타입 확인은 자바스크립트 코드를 타입스크립트로 마이그레이션할 때 유용하다.
  • 하지만 코드를 마이그레이션 하는 상황이 아니라면 모든 코드의 타입을 컴파일 타임에 지정하는 것을 목표로 하자.
// TypeScript는 root 디렉토리에 항상 tsconfig.json이라는 설정파일이 필요하다
//tsconfig.json

{
    "compilerOptions": {
        "lib": ["ES2015"], // TSC가 실행환경에서 이용할수 있다고 가정하는 API
        "module": "commonjs", // TSC가 코드를 컴파일할 대상 모듈시스템(CommonJS, ES2015등..)
        "outDir":"dist", //생성된 JS코드를 출력할 디렉토리
        "sourceMap": true,
        "strict": true, // 유효하지 않은 코드를 엄격하게 검사 (true를 권장)
        "target": "es2015" // TSC가 코드를 컴파일할 자바스크립트 버전
    },
    "include": [ //TSC가 타입스크립트 파일을 찾을 디렉토리
        "src"
    ]
}

 

'TS > [책] 타입스크립트 프로그래밍' 카테고리의 다른 글

4장. 함수 [not fin]  (0) 2021.11.27
3장. 타입의 모든 것  (0) 2021.11.26