ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Literal Types
    Typescript 2022. 6. 16. 16:16
    let 이름 :string;

    이렇게 이름이란 변수에는 문자를 넣으세요 가 아니라 더 엄격한 타입지정을 할 수 있다.

    let 이름 :'Kim' | 'Lee'

    이렇게 쓰면, 이름이란 변수엔 Kim과 Lee만 들어갈 수 있다.

    이렇게 리터럴타입을 쓰면, 변수에 뭐가 들어올지 엄격하게 관리가 가능하고 자동완성기능이 생긴다.

     

    리터럴타입을 알면 const변수를 좀 더 확장성있게 할 수 있다.

    let 나 :'이름 | 나이';
    
    const 변수 = '이름';

    이런 식으로, 자료를 여러개 저장할 수 있다.

    하지만, 문제점이 있다.

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

    자료.name을 하면 'Kim'이 나오지만 에러가 난다.

    이유는 literal 타입은 Kim이라는 자료만 들어올 수 있습니다~! 가 아니라

    Kim이라는 타입만 들어올 수 있습니다. 라는 것이다.

    즉, 자료.name은 string타입이지, kim타입이 아니기 때문이다.

     

    이런걸 해결하려면

    1. object 만들 때 타입지정을 확실히 하던가,

    2. as 문법으로 타입을 구라치면 된다.

    자료.name as 'kim'

    3. 또한

    var 자료 = {
      name : 'kim'
    } as const

    이렇게 as const를 붙이면 된다.

    as const를 쓰면, literal type지정을 알아서 해주세요 라는 뜻이다.

    그러면, object value값을 그대로 타입으로 지정해준다. name : 'Kim'이렇게 된다.

    그리고 object의 속성들에 모두 readonly를 붙여준다.

    댓글

Designed by Tistory.