as const에 대해
TypeScript은 다음과 같이 구성되어 있습니다.
- TypeScript란?
- TypeScript - 기본 타입 작성법
- TypeScript - Union Type, any, unknown
- Type Narrowing
- Type 키워드로 타입을 변수에 담기
- as const에 대해
- TypeScript - interface에 대해
- TypeScript - never타입?
- TypeScript - tuple타입?
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타입이기 때문에 에러가 발생하는 것입니다.
이를 해결하기위한 방법은 여러가지가 있습니다.
- student 객체의 타입에 직접 name을 “Kim” 타입으로 지정
- Type assertion 사용
- student객체에 as const 사용하기
let student = {
name : 'kim'
} as const;
function myFun(a : 'kim') {
}
myFun(자료.name)
위처럼 as const 를 object뒤에 붙이면 에러가 나지 않습니다.
as const는 2개의 효과를 가지고 있습니다.
- 타입을 object의 value로 바꿔줍니다. (타입을 ‘kim’으로 바꿔줍니다)
- object안에 있는 속성을 모두 readonly로 바꿔줍니다. (변경하면 에러나도록)
이번 포스팅에서는 as const에 대해서 알아보았습니다.감사합니다.
End.