타입스크립트 Literal Types, as const

버건디·2023년 1월 3일
0

타입스크립트

목록 보기
7/12
post-thumbnail

Literal types는 단순한 타입 뿐만 아니라 정확한 값을 지정할 수 있다.

type LastName = 'Kim';

const person :LastName = 'Park';

위 처럼 Kim이라는 값을 타입으로 지정했다면 그에 맞는 값은 무조건 Kim 이어야한다.

type LastName = 'Kim' | 'Park';

const person :LastName = 'Park';

이런식으로 | 을 이용해서 선택지를 넓힐 수 있다.

const addNum =  (a : 2) : number =>  {
   return a;
}

addNum(3)

함수도 마찬가지이다.


🔍 as const 란

const 자료 = {
  name: "kim",
} 

const 함수 = (a: "kim") => {
  return a;
};

함수(자료.name);

위의 코드는 자료.name이 "kim" 이고, 함수 파라미터도 'kim'이기 때문에 오류가 나지 않을거라고 생각하지만 오류가 난다.

자료.name 은 string 타입으로 인식하고 a : "kim"은 string이 아닌 "kim" 타입 그 자체로 인식한다.

이럴때 const 라고 하더라도 프로퍼티가 string으로 인식될때, as const를 붙여주면 그 값자체가 타입이 된다.

const 자료 = {
  name: "kim",
} as const;

const 함수 = (a: "kim") => {
  return a;
};

함수(자료.name);

as const 의 효과는

  1. 객체의 value 값을 그대로 타입으로 지정해준다.
  2. 객체의 속성들에 전부 readonly를 붙여준다.
const 자료 = {
  name: "kim",
} as const;

자료.name = 'park';

객체를 변경 못하도록 하게 하고 싶다면 as const를 붙여서 그 객체를 잠궈주면 된다.

profile
https://brgndy.me/ 로 옮기는 중입니다 :)

0개의 댓글