TypeScript : 타입 종류 & any, unknown, union

728x90
반응형

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

- 여러 타입 중 하나를 가질 수 있는 변수를 선언할 때 사용

- | 연산자를 사용하여 여러타입을 결합하여 표현함

 

 

 

 

★ 타입스크립트를 쓰면서 여러 타입을 하나의 변수로 해결하겠다는 생각은 지양하기

 

 

끝.

반응형