JavaScript의 약점
JavaScript는 동적언어!
짐작하기 어려운 undefined 에러가 발생되기 쉽다
- 변수 타입이 실행 시간에 결정됨
- 타입 체크 문제
- 불확실한 객체
TypeScript의 장점
- 변수 타입을 컴파일 시간에 결정
- VS Code에 입력하는 순간 타입 체크
- VS Code에 입력하는 순간 객체 체크
- 객체 지향 프로그래밍에서의 장점 (class의 객체를 마음대로 조작하지 못하도록 private 설정)
- 외부 모듈의 타입 정보 제공
tsc = typeScript 컴파일러
- 컴파일러의 역할
- 소스코드의 정적 타입 검사 >> 개발자가 코드에서 타입 관련 오류 미리 발견하고 수정 가능
- TypeScript >> JavaScript로 코드 변환
- 컴파일러의 장점
- 에러 메시지 해석에 도움을 받을 수 있다.
tsc 명령어
- tsc --init
- tsconfig.json 생성
- tsc index.ts
- index.ts를 컴파일
- tsc src/*.ts
- src 디렉토리 안에 있는 모든 .ts 파일을 컴파일
tscconfig.json
- compilerOptions의 strict : true
- compilerOptions의 sourceMap 옵션은 개발 환경에서 true로 설정하는 것을 권장한다
.d.ts 파일
- .d.ts 파일 덕분에 JavaScript로 작성된 라이브러리를 사용할 수 있다.
- .d.ts는 TypeScript 타입 정의 파일이다.
- .d.ts 파일을 통해 외부 라이브러리의 타입 추론이 가능하다.
- @types 라이브러리를 통해 외부 라이브러리에 대한 타입 정보를 제공한다.
TypeScript 프로젝트 세팅
1. 터미널에서 npm init -y (package.json 파일 생성됨)
2. tsc --init --rootDir ./src --outDir ./dist --esModuleInterop --module commonjs --strict true --allowJS true --checkJS true
3. package.json의 scripts 내용 수정
"scripts": {
"start": "tsc && node ./dist/index.js",
"build": "tsc --build",
"clean": "tsc --build --clean"
},
4. src 디렉토리 생성
프로젝트 실행
1. npm run build : 컴파일 에러가 있다면 해당 과정에서 에러 발생
2. npm run start : 컴파일 완료 후 실행하면
기본 타입
- boolean
- number
- string
- 배열 : 기본타입+[] number[]
- 튜플(tuple) : [string, number, boolean]
- enum : 열거형 데이터 타입
any, unknown, union
가변적인 타입의 데이터를 저장하고 싶을 때 any 보다는 unknown 사용이 권장된다.
그리고 가변적인 타입을 하나씩 정의할 수 있다면 union 사용이 가장 권장된다.