1.Enum (열거형 타입)

기본형은 이렇다.

enum Test {
	ADMIN,
	CUSTOMER,
	USER
}

 

숫자를 직접 할당해도 되지만 굳이 입력하지 않아도 자동으로 할당된다.

enum Test {
	ADMIN = 0,
	CUSTOMER = 1,
	USER=2
}

 

배열처럼 처음부터 0,1,2 순서로 할당됨.

 

물론 원하는대로 할당 숫자와 위치를 지정할 수도 있다.

 

enum Test {
	ADMIN ,
	CUSTOMER = 10,
	USER
}

Test.ADMIN //0
Test.CUSTOMER //10
Test.USER //11

 

프로퍼티값이 많고, 코드가 복잡할 경우 혹시 모를 오타와 통일되지 않는 값을 적어넣는 등의 실수를 방지할 수 있다.

 

const user1 = {
    name:"이름이다",
    (중간에 많은 프로퍼티 존재)
    role: "user"
}
...
..
.
const user25 = {
    name:"이름이다25",
    (중간에 많은 프로퍼티 존재)
    role:"usere"
}

 

이런 오타 방지 가능

 

문자 할당도 가능하다.

enum Test {
    ADMIN = "admin" ,
    CUSTOMER = "customer",
    USER = "user"
}

 

 

2. any 

특정 변수 타입을 모를 때 사용한다. 이 변수에 문자가 담길지, 숫자가 담길지, 불리언이 담길지...

 

  • any타입에는 모든 값이 들어가고, 모든 메서드가 사용 가능하다.
let anyVar:any = 10;
anyVar = "Hi"
anyVar = {}
anyVar = ()=>{};

anyVar.toUpperCase();
anyVar.toFixed();

 

위 예시처럼 숫자, 문자, 객체, 함수까지 모두 할당 가능하고, 

문자열 메서드, 숫자 메서드를 사용해도 오류가 뜨지 않는다.

 

하지만 이렇게 무분별하게 any 타입을 사용하고 값을 재할당 할 경우, 런타임에서 오류가 발생할 수 있음에 주의해야한다.

 

위 코드에서도 계속해서 다른 타입의 값을 anyVar 에 할당했다.

최종적으로 anyVar에 함수가 할당되고,

anyVar.toUpperCase(); 함수가 실행되면 anyVar에서 문자열을 찾을 수 없어 오류가 발생한다.

 

any타입은 불가피한 경우가 아니면 사용 자제해보기!

 

  • 변수에도 any타입을 담을 수 있다.
let num:number = 100;
let anyVar:any = "hello"

num = anyVar

 

 

3.unknown

  • any처럼 어떤 값이라도 저장할 수 있지만 보다 안전하다.
  • 연산, 메서드 사용이 불가하다.
  • any와는 달리 어떤 변수에도 저장 불가능

 

4.void

  • 값을 반환하지 않는 함수의 반환값 타입을 정의한다.
function foo():void{
 	console.log("hello") // return 값이 없다
}

 

  • 변수에도 void 할당이 가능하다.
let testVar:void


testVar = undefined;

 

이 때 void 타입인 변수에는 undefined만 담을 수 있다.

tsconfig.json에서 컴파일러옵션의 strictNullChecks을 false 체크하면 null도 담을 수 있다.

 

5.never

  • 말 그대로 불가능을 의미
  • 함수가 어떤 값도 반환하지 않는 모순된 함수일경우
  • 변수에 할당 시 어떤 값도 담을 수 없다. (any 포함)

+ Recent posts