728x90

https://codingapple.com/course/typescript-crash-course/

 

빠르게 마스터하는 타입스크립트 - 코딩애플 온라인 강좌

  누구나 마음 한켠엔 나만의 웹서비스를 만들고 싶어합니다. 프론트엔드는 어찌저찌 하겠는데 서버 만드는게 어렵고 귀찮다고요? 그렇다면 Firebase를 쓰십시오.   구글이 웹서버를 대신 만들어

codingapple.com

본 블로그는 해당 타입스크립트 강의(코딩애플) 수강 후, 작성된 게시물입니다.


Literal Types

특정 글자나 숫자만 가질 수 있게 제한을 두는 타입

변수

let 나이 :24;	// Literal type
나이 = 24;
나이 = 29;  // error

let 오정환 :'대머리'|'솔로';
오정환 = '대머리';
오정환 = '풍성충' // error

함수

function 함수(a :'hello') :1|0 {	// Literal type
  return 0;
}
함수('hello');

function 확률(패 :'가위'|'바위'|'보') :('가위'|'바위'|'보')[] { // Literal type
  return [패];
}
확률('가위');
"const를 사용하면 되지 않나요?"

▶ 1 값을 가진 변수를 지정하고 싶어요
    const one = 1;
▶ 0 또는 1을 가진 변수를 지정하고 싶어요.
    const bit = 1.....?? 0???
    let bit :number; ??
    ▷ let bit :0|1; // 이런 경우에, literal type을 사용하면 유용
        bit = 1;
        bit = 0;
        bit = 2; // error

var 자료 = {
  name : 'kim'
}
function 내함수(a :'kim'){
  // code
}
내함수(자료.name); // error

오류가 나는 이유?

함수의 파라미터 (a :'kim')의 의미는 kim이라는 자료만 들어올 수 있다는 의미가 아닌, kim이라는 타입만 들어올 수 있다는 의미이다.

'var 자료' 변수 위에 커서를 올려놓으면, name은 string 타입이라고 명시되어 있다. 고로, 자료.name은 'kim'타입이 아니라 string 타입이여서 오류가 발생하는 것이다.

해결 방법?

   1. object에 타입 지정하기    

더보기
object의 타입을 'kim'으로 지정하여 해결할 수 있다.

   2. as로 타입 변경하기

더보기
일시적으로 'kim' 타입으로 변경하여 해결할 수 있다.

   3. as const 사용하기

       효과 1. 해당 object를 literal type으로 알아서 지정해준다. → 해당 데이터로 타입을 지정해준다.

       효과 2. object 속성들에 모두 readonly를 붙여준다.

더보기
literal type으로 지정하여 해결할 수 있다.
728x90

+ Recent posts