/ TYPESCRIPT

as const에 대해

TypeScript은 다음과 같이 구성되어 있습니다.

as const 문법

const student = {
    name : "Kim"
}

function myFun(a : "Kim") {}

myFun(student.name);

위와 같이 student객체와 myFun이라는 함수를 만들었습니다. myFun함수의 매개변수 a의 타입은 “Kim”타입으로 지정하였습니다. 이후 myFun함수에 student.name을 전달하였습니다. 그런데 이는 에러를 발생시킵니다. student.name이라는 값은 분명 “Kim”인데 왜 에러가 발생하지? 라는 생각이 들 수도 있습니다.

여기서 분명히 해야하는 점은 myFun함수의 매개변수 a는 “Kim”이라는 값만 들어올 수 있다는 의미가 아니라 “Kim”이라는 타입만 들어올 수 있다는 의미입니다. student.name의 값은 “Kim”이지만 타입은 분명 string타입이기 때문에 에러가 발생하는 것입니다.

이를 해결하기위한 방법은 여러가지가 있습니다.

  1. student 객체의 타입에 직접 name을 “Kim” 타입으로 지정
  2. Type assertion 사용
  3. student객체에 as const 사용하기

let student = {
  name : 'kim'
} as const;

function myFun(a : 'kim') {

}
myFun(자료.name)

위처럼 as const 를 object뒤에 붙이면 에러가 나지 않습니다.

as const는 2개의 효과를 가지고 있습니다.

  1. 타입을 object의 value로 바꿔줍니다. (타입을 ‘kim’으로 바꿔줍니다)
  2. object안에 있는 속성을 모두 readonly로 바꿔줍니다. (변경하면 에러나도록)

이번 포스팅에서는 as const에 대해서 알아보았습니다.감사합니다.
End.