"우아한 타입스크립트 with 리액트"를 읽으며 정리한 학습 노트.
2장에서 정적/동적 타입, 컴파일타임/런타임, 타입 소거에 대한 내용
1. 정적 타입 vs 동적 타입
먼저 가장 큰 차이부터.
| 구분 | 언제 타입을 검사하나 | 예시 |
|---|---|---|
| 정적 타입 | 실행 전에 검사 | TypeScript, Java |
| 동적 타입 | 실행 중에 검사 | JavaScript, Python |
TypeScript는 코드를 실행하기 전에 오류를 잡아주는 형태.
JavaScript는 일단 실행하지만, 실행 중에 문제가 있을 수 있음.
2. 컴파일타임 vs 런타임
- 컴파일타임: TypeScript 코드를 JavaScript로 바꾸면서 검사하는 시점
- 런타임: 변환된 JavaScript가 브라우저/Node.js에서 실제로 실행되는 시점
흐름
.ts를 작성한다.tsc가 검사하고.js로 바꾼다.- 그
.js가 (브라우저 or Node.js) 실제로 돌아간다.
핵심 : 타입스크립트의 타입 검사는 컴파일타임에서 끝난다
3. 강타입 vs 약타입
강타입/약타입은 "타입이 다를 때 자동 변환을 얼마나 허용하느냐"에 가까움.
| 구분 | 특징 | 예시 느낌 |
|---|---|---|
| 강타입 | 타입이 다르면 쉽게 안 섞어줌 | Python, TypeScript(타입체커 관점) |
| 약타입 | 필요하면 암묵적으로 바꿔서 계산 | JavaScript |
JavaScript에서
"5" - 1 // 4
문자열인데 숫자 연산이 되는 상황이, 편리해 보이지만 예기치 못한 버그의 원인이 되기도 한다.
![]()
4. "타입은 컴파일 후에도 남아있다"는 말 이해하기
이 부분이 제일 헷갈렸다.
- TypeScript 타입 정보는 대부분 컴파일 후 사라진다.
- 런타임에는
User, 같은 TS 타입 이름을 확인할 수 없다.
이전/다음 포스트
댓글 남기기
댓글 0개
첫 댓글을 남겨보세요.