본문 바로가기

JAVASCRIPT/TypeScript

<TypeScript> 기본 타입 -2 / ENUM 타입/ Any / UNION / Alias / Literal

 

1. ENUM 타입

 

타입을 ENUM 으로 선언하면 순서대로 0, 1, 2, 를 할당해준다

 

 enum Role {ADMIN, READ_ONLY, AUTHOR};
 

   // 컴파일 후 js 파일을 보면

        var Role;
        (function (Role) {
            Role[Role["ADMIN"] = 0] = "ADMIN";
            Role[Role["READ_ONLY"] = 1] = "READ_ONLY";
            Role[Role["AUTHOR"] = 2] = "AUTHOR";
        })(Role || (Role = {}));
        ;

컴파일 하면 위와 같이 알아서 js 코드를 작성해준다

 

    +) 만약 시작값이 0이 아니길 원한다면
    enum Role {ADMIN = 5, READ_ONLY, AUTHOR};
        이렇게 시작값을 지정해주면된다. 이후의 값들은 초기값에서 점점 증가한 값으로 할당된다
        또한 각각 값에 할당해줘도 된다!! 텍스트도 할당 가능하다

 

2.  any 타입

 

any타입을 지정한 곳에서는 타입스크립트 컴파일러가 작동하지 않게 된다. 따라서 런타임 검사를 수행하는 곳, 어떤 데이터를 받게될지 모르는 곳에 사용한다. 그외에는 잘 사용하지 않는다

 

* any와 unknown은 다른 것이다.

 

 

3. UNION 타입

 

입력받을 데이터가 여러 데이터 타입일 수 있는 경우

 

const input : number | string  // 이렇게 지정해준다

이렇게 예시처럼 number | string으로  지정하고  ' + ' 연산자를 사용하면 

 

'+' 연산자를 'string | number' 및 'string | number' 형식에 적용할 수 없습니다.

같은 오류가 발생할 수 있는데 이때 추가적으로 런타임 타입검사 코드를 추가해주면 된다.

 

 

 

 

 

4.  Literal ,  리터럴 타입

 

숫자나 문자열도 아니며 정확한 값을 가지는 타입 ( 상수 정도로 이해하면 될 것 같다)

ex) const number = 6;

 

 

 

5.   Alias ,  알리어스 타입

사용자가 지정한 타입

( * js나 타입스크립트에 내장되어있지 않은 이름으로 별칭을 지정해 직접 지정한 타입,

유니온 타입을 저장하는 것만 가능한 것이 아닌, 복잡할 수 있는 객체 타입에도 별칭을 붙일 수 있다. )
 
 type User = { name: string; age: number };
            const u1: User = { name: 'Max', age: 30 }; // this works!
            타입 별칭을 사용하면 불필요한 반복을 피할 수 있다.

            예를 들어, 다음 코드를 아래와 같이 단순화할 수 있습니다.

            function greet(user: { name: string; age: number }) {
            console.log('Hi, I am ' + user.name);
            }
            
            function isOlder(user: { name: string; age: number }, checkAge: number) {
            return checkAge > user.age;
            }
            
            ===================================================================
            단순화 후:

            type User = { name: string; age: number };
            
            function greet(user: User) {
            console.log('Hi, I am ' + user.name);
            }
            
            function isOlder(user: User, checkAge: number) {
            return checkAge > user.age;
            }

 

 

 

6.  Function 함수형 타입

 

함수형을 선언만 해놓으면 다른 함수에 의해 덮어 씌워질 수 있기 때문에 동작 방식까지 세세하게 선언 해야한다 .

 

   ex) let getfn : Function; // 이렇게 함수형으로 선언,
   
     let combineValues : (a : number, b : number) => number; // 이렇게 적어주면
        이와 같은 형식의 함수만 담을 수 있음
        
        
    !!! 콜백 함수는 자신이 전달되는 인수가 반환 값을 기대하지 않는 경우에도 
        값을 반환할 수 있습니다.
728x90