타입스크립트를 사용하는이유?
- 타입 안전성을 지키기 위해서
- 타입 안전성이란 타입을 이용해 프로그램이 유효하지 않은 작업을 수행하지 않도록 방지하는 것이다.
- 타입스크립트는 에러를 알려주는 시점이 편집기에 코드를 입력하는 순간이기 때문에 에러를 검출하기에 용이하다.
컴파일러
- 프로그램은 프로그래머가 작성한 텍스트파일을 컴파일러라는 프로그램이 파싱하여 추상 문법 트리(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 |