Typescript
왜 타입스크립트를 써야하는가?
자바스크립트의 약점
- runtime에 결정되는 변수 타입
=> 개발자의 실수로 인한 오류를 찾아내기 힘듬
- 약한 타입 체크
=> 변수/상수를 구분하는 정도만 지원
타입스크립트
- comfile때 변수의 타입 체크
=> 코드입력시 실시간으로 vscode에 에러메시지
타입스크립트의 강점
- 코드의 안정성과 가독성이 높아짐
- 다른 개발자가 이해하기 쉬움
- 향후 유지보수 용이
컴파일러와 tsc
컴파일러 : 프로그래밍 언어도 작성된 소스코드 -> 다른 프로그래밍 언어로 변환
tsc(Typescirpt compiler) : 타입검사 및 코드 변환(ts->js)
tsc 명령어
- tsc --init : tsconfig.json생성
- tsc index.ts : index.ts를 컴파일
tsd src/*.ts : src디렉토리 내 모든 ts파일 컴파일
- tsc index.js --declaration --emitDeclarationOnly : @types 패키지를 위한 d.ts파일 생성
기본타입
- boolean : 참/거짓
- number : 숫자
- string : 문자열
- 배열
- 튜플 : 서로 다른 타입의 원소가 순서를 가지는 특수한 형태의 배열
const person: [string, number, boolean] = ['Spartan', 25, false];
const person2: [string, number, boolean] = [25, 'Spartan', false]; // 오류!
push를 통해 정의돈 데이터 타입보다 더 저장 할 순 있지만 내부구조 변경 => 정해진대로
- enum
- 열거형 데이터 타입
- 상수를 쉽게 접근하여 사용할 수 있게 하는 타입
- number, string 값만 할당
- 값이 설정되어 있지 않으면 숫자 0부터 시작
enum UserRole {
ADMIN = "ADMIN",
EDITOR = "EDITOR",
USER = "USER",
}
enum UserLevel {
NOT_OPERATOR, // 0
OPERATOR // 1
}
- any와 unknown : 둘다 모든 값을 받을 수 있음
- any 와 unknown의 차이점
unknown은 그 값을 다른 타입 변수에 할당시 명시적 타입확인 필요
- unknown의 한계 : 재할당 하지 않으면 타입 안정성이 보장되지 않음
- union( | ) : 여러 타입 중 하나를 가질 수 있는 변수 선언시 사용
- 가변적 타입의 데이터 저장시 any(x) unknown(o)
union으로 모든 타입 정의하는게 좋음