TypeScript 변수 선언3 - tuple, enum

변수예시설명자바스크립트에 존재?
number3,2,-7,0.4JavaScript의 모든 숫자(정수,소수)O
string"Hello", 'World'모든 문자열O
booleantrue, false참, 거짓O
object{ name : "Alex"}Object(객체)를 지칭함O
array[0,1,2,3,4,5]원소의 변수에 따라 배열의 타입이 정해진다O
tuple[0,"Hello], ["World", 1]고정된 길이와 속성의 배열X
enum[APPLE = 0, BANANA=1]변수명에 따른 식별코드 부여X

 


이제 이표의 마지막 2개에 대해서 설명해 드리겠습니다. tuple, enum는 JavaScript에 존재하지 않습니다. 


let tuple1:[number, string]; // tuple발생
tuple1 = [0, "Hello"]; // tuple선언

console.log(tuple1);

위 ts코드를 동작할때 tuple1변수는 오직 2개의 원소와 각각 숫자와 문자를 가지도록 하용이 되어 있습니다. 


위 사진에서 tuple1배열에 인덱스 2의 위치에서 숫자 1을 입력할려고 할때 TypeScript에서 경고를 보냅니다. 첫번째로 tuple1의 인덱스 2는 존재하지 않다는 것입니다. 두번째는 인덱스 2가 존재하지 않으니 undefined상태고 이곳에 숫자 1을 입력할수 없는 것입니다. 


let tuple1:[number, string]; // tuple발생
tuple1 = [0, "Hello"]; // tuple선언

tuple1.push(1);

console.log(tuple1);


하지만 tuple1에 push를 하게 되면 TypeScript의 문법을 피할수가 있습니다. 물론 추천을 드리지 않지만 이런 방법이 있다는 것도 참고해 주시기 바랍니다. 


// enum동작

// enum선언
// 변수명을 이용하여 Number입력
// Role객체에 변수명 PRO, NUBE, AVE는
// 각각 Number 0, 1, 2가 입력되 있다.
enum Role {PRO, NUBE, AVE};

const state = Role.PRO;

switch(state){
case 0:
console.log("You are a PRO.")
break;
case 1:
console.log("You are a NUBE.")
break;
case 2:
console.log("You are a AVE.")
break;
default : console.log("Wrong Input");
}

이제 enum을 선언하는 코드를 보면 JavaScript와 다른 형식을 보게 된다. enum은 여러 프로그래밍 코드에서 사용되지만 JavaScript에서 사용되지는 않는다. 

// enum동작
// enum선언
// 변수명을 이용하여 Number입력
// Role객체에 변수명 PRO, NUBE, AVE는
// 각각 Number 0, 1, 2가 입력되 있다.
var Role;
(function (Role) {
Role[Role["PRO"] = 0] = "PRO";
Role[Role["NUBE"] = 1] = "NUBE";
Role[Role["AVE"] = 2] = "AVE";
})(Role || (Role = {}));
;
var state = Role.PRO;
switch (state) {
case 0:
console.log("You are a PRO.");
break;
case 1:
console.log("You are a NUBE.");
break;
case 2:
console.log("You are a AVE.");
break;
default: console.log("Wrong Input");
}



위는 enum TypeScript를 컴파일한 JavaScript코드와 터미널 입니다. JS코드에는 enum이 존재하지 않기 때문에 function을 이용하여 복잡한 코드를 작성하게 됩니다. 


// enum동작

// enum선언
// 변수명을 이용하여 Number입력
// Role객체에 변수명 PRO, NUBE, AVE는
// 각각 Number 1, 2, 3가 입력되 있다.
enum Role {PRO = 1, NUBE, AVE}; // PRO는 1입

const state = Role.PRO;

switch(state){
case 0:
console.log("You are a PRO.")
break;
case 1:
console.log("You are a NUBE.")
break;
case 2:
console.log("You are a AVE.")
break;
default : console.log("Wrong Input");
}



또는 위의 TS코드 처럼 임의로 PRO에 1을 입력하여 모든 원소가 1씩 밀리게 할수도 있습니다.






댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)