리터럴 타입

고유·2022년 3월 28일
1

타입스크립트

목록 보기
4/5

1. 리터럴 타입이란?

  • 타입에 자료형을 부여하는 대신 구체적인 값을 부여하는 방식으로 더 엄격한 타입 제어가 가능하다.
  • 그 값 자체가 타입이 되어 변수에 부여할 수 있음
  • 타입스크립트가 자동완성을 제공한다는 장점이 있다.
type NameType = "choi" | "sj"
const name: NameType = "choi"
// 변수에 리터럴 타입을 부여하면 일반 자료형 타입을 부여한 경우와는 달리 자동완성을 제공해준다.

2. 주의점

1) 문제점

const info = {
  name: "choi"
}

const fn = (x: "choi") => {
	return ~
}
    
fn(info.name)
// 이렇게 작성하면 에러남
  • 위 같은 경우 함수의 인자로 넣을 수 없다는 에러가 뜰 것이다.
  • 왜냐하면 함수는 x 파라미터에 ‘choi’이라는 타입만 입력할 수 있다고 해놨고 info.name이라는 것은 string 타입이지 ‘choi’타입이 아니기 때문이다.

2) 해결

① assertion

  • assertion 문법을 사용해서 인자를 ‘choi’타입으로 덮어씌운다. as ‘choi’

② as const

const info = {
  name: "choi"
} as const

const fn = (x: "choi") => {
	return ~
}
    
fn(info.name)
  • as const의 효과는 2개이다.
  • 타입을 object의 value로 바꿔준다. (즉, name의 타입을 string이 아닌 'choi'으로 바꿔준다.)
  • object안에 있는 모든 속성을 readonly로 바꿔준다. (변경하면 에러나게 하기 위함)
  • object 자료를 리터럴 타입으로 완전히 잠그려면 as const를 쓴다.
profile
프론트엔드

0개의 댓글

관련 채용 정보