📌 JavaScript만 사용하는 것과 비교해 TypeScript를 사용하는 이유에 대해 설명해주세요
💡 JavaScript + Type
= TypeScript
자바스크립트는 C-family(C, C++ Java 등) 언어와 다른 점을 가지고 있다.
- Prototype-based Object Oriented Language
- Scope와 this
- 동적 타입 언어
위의 특성들로 인해 (클래스 기반 객체지향 언어에 익숙한) 여러 개발자들이 참여하는 규모가 큰 프로젝트에서는 주의하여 사용하여야 한다.
이런 자바스크립트의 태생적인 문제들을 극복하고자 TypeScript를 도입한 것이다.
✅ 점진적 타입 언어
- TypeScript를 사용하는 가장 큰 이유
- 점진적 타입 언어란?
- 동적 타입 언어와 정적 타입 언어를 혼합한 언어를 말한다.
- 정적 타입처럼 변수의 타입을 코드 실행 전에 결정하고, 타입 오류가 없는지 프로그램 실행 전에 코드를 검사한다.
- 동적 타입처럼 모든 변수에 반드시 타입을 명시하지 않아도 변수에 담기는 초기값을 기준으로 타입을 자동으로 결정해준다.
✅ 컴파일 언어
- 컴파일 과정에서 오류를 잡아내기 때문에 오류를 잡아내기 쉽다는 장점이 있다.
- 자바스크립트의 경우, 인터프리터 언어이므로 따로 컴파일 과정을 거치지 않는다.
- 런타임에 오류를 잡아낼 수 밖에 없다.
결론
- 여러 명이 협업을 하기 위해서는 타입을 잘 명시해주어야 의도치 않은 오류를 발생시키지 않을 수 있다.
- Ex. 함수의 파라미터/리턴 타입이 맞지 않아서 생기는 오류 등
- 그 타입을 명시해주기 위해 TypeScript를 사용하는 것!
📌 TypeScript의 동작 원리에 대해 설명해 주세요.
💡 타입스크립트는 컴파일 언어 다.
⛔ 컴파일 언어
Compile
- 컴퓨터가 해석하기 쉽게 우리가 작성한 코드를 0과 1로 변환해주는 과정.
- object 파일로 바꿔 주는 과정
- 코드 → AST
- AST → 바이트 코드
- 바이트 코드 실행
🤖 타입스크립트의 컴파일 과정
1. 타입스크립트 코드 → AST
2. AST 검사 (== 타입 검사)
3. AST → 자바스크립트 코드
- 타입스크립트의 컴파일 과정은 다른 주요 언어들과 조금 다르다.
- 코드에서 바꾼 AST를 바이트 코드로 바꾸지 않고, 타입 검사를 수행한다.
- 이때, 직접 코드를 실행해서 오류가 있는지 검사하는 것이 아니기 때문에 정적 검사라고 한다.
- 실행해서 오류를 검사하는 것은 동적 검사다.
- 이후 타입스크립트 컴파일러로 만들어진 자바스크립트 코드를 실행하면 된다.
'📂 위클리 페이퍼' 카테고리의 다른 글
[13주차] Next.js의 SSR 실행 과정 & Hydration (1) | 2023.12.07 |
---|---|
[13주차] Next.js를 사용하는 이유 (1) | 2023.12.07 |
[9주차] Presentational & Container 디자인 패턴이란? (1) | 2023.12.07 |
[9주차] CSS-in-JS의 장단점 (2) | 2023.12.07 |
[8주차] 리액트 생명주기란? (1) | 2023.12.07 |