1. 타입 제대로 알아야 하는 이유
- 코드의 품질과 유지보수가 수월함 + 실수 줄이기 가능
2. 기본 타입
(1) boolean
- 2가지 상태 (켜짐/꺼짐 , 유효/유효x)인경우 자주 사용
- 3가지 상태는 enum이나 string 사용
(2) number
- 정수, 실수, 2~16진수 표현 가능
(3) string
- 백쿼트 (백틱) ` : 키보드에서 ~와 같은 키 (ES6부터 생긴 템플릿 리터럴)
(4) 배열
- 대괄호 []
(5) 튜플 tuple
- 서로 다른 타입의 원소를 순서에 맞게 갖을 수 있는 특수형태 배열
- 어떤 타입의 원소를 허용할 것인지 정의만 해주면 됨.
const person: [string, number, boolean] = ['Spartan', 25, false];
const person2: [string, number, boolean] = [25, 'Spartan', false]; // 오류!
(6) enum
- 열거형 데이터 타입
- 숫자 0으로 시작함 (값이 설정되어 있지 않은 경우)
- number 혹은 string만 할당 가능
- 명확하게 관련된 상수값들을 그룹화할 때 사용하는 것
enum UserRole {
ADMIN = "ADMIN",
EDITOR = "EDITOR",
USER = "USER",
}
enum UserLevel {
NOT_OPERATOR, // 0
OPERATOR // 1
}
function checkPermission(userRole: UserRole, userLevel: UserLevel): void {
if (userLevel === UserLevel.NOT_OPERATOR) {
console.log('당신은 일반 사용자 레벨이에요');
} else {
console.log('당신은 운영자 레벨이군요');
}
if (userRole === UserRole.ADMIN) {
console.log("당신은 어드민이군요");
} else if (userRole === UserRole.EDITOR) {
console.log("당신은 에디터에요");
} else {
console.log("당신은 사용자군요");
}
}
const userRole: UserRole = UserRole.EDITOR;
const userLevel: UserLevel = UserLevel.NOT_OPERATOR;
checkPermission(userRole, userLevel);
3. Const , readonly
- 2가지 모두 불변성 보장
- const는 =연산자로 재할당 불가능
- readyonly는 객체의 속성을 불변으로 만드는 데 사용
=> 클래스나 인터페이스의 속성을 변경할 수 없도록 !
4. let
- 값을 변경할 수 있는 변수
5. any, unknown, union
- 가변적인 타입의 데이터 저장시 unknown
- 가변적인 타입을 일일이 정의 가능하면 union 사용
(1) any
- 어떤 타입의 값이든 저장할 수 있는 슈퍼 타입
- JS의 object타입과 같은 최상위 타입임
- 가급적 사용 x
(2) unknown
- any와 비슷한 역할이지만 더 안전한 방식으로 동작
- 모든 타입의 값을 저장 가능 + 명시적으로 타입을 확인 필
(3) union
- 재할당이 일어나지 않으면 타입 안정성이 보장x
- 여러 타입 중 하나를 가질 수 있는 변수를 선언할 때 사용
- | 연산자를 사용하여 여러타입을 결합하여 표현함
★ 타입스크립트를 쓰면서 여러 타입을 하나의 변수로 해결하겠다는 생각은 지양하기 ★
끝.
'TypeScript' 카테고리의 다른 글
TypeScript : 카페 프로그램 구현 (0) | 2023.12.13 |
---|---|
TypeScript : enum과 object literal 비교 & 유틸리티 타입 (0) | 2023.12.13 |
TypeScript : 성적표 프로그램 (0) | 2023.12.12 |
TypeScript : .d.ts 파일 (0) | 2023.12.12 |
TypeScript : 컴파일러 | tsc | tsconfig json 옵션 (0) | 2023.12.12 |