Literal Types

크롱·2023년 7월 19일
0

TypeScript

목록 보기
5/25

엄격한 타입을 지정해봅시다

🐬 Literal Types

특정 글자나 숫자만 가질 수 있게 제한을 두는 타입 literal type
자동완성 힌트 주는 장점을 가졌따.

let john :'멍청이'|'바보';
let kim :'솔로';

john이라는 변수는 이제 '멍청이' 또는 '바보' 라는 글자만 할당할 수 있습니다.
kim이라는 변수는 이제 '솔로' 라는 글자만 할당할 수 있습니다. 


함수예제

							👇return 값 지정
function 함수(a : 'hello') :1 | 0 | -1 {
  return 0
}
함수('hello')
function rock(a : '가위'|'바위'|'보') :('가위'|'바위'|'보')[]{
  return ['가위','보'] 
} 




😭 Literal Types의 문제점

var 자료 = {
  name : 'kim'
}
==>자료.name 은 'kim'입니다.


function 내함수(a : 'kim') {
	console.log('hi')
}

내함수(자료.name) 
==>오류뜹니다. 🙅🙅
내함수(a : 'kim') 에서'kim'이라는 타입만 들어올수있음.
자료.name 은 typestring이므로 안됨.

😜 해결방법 - as const

object value 값을 그대로 타입으로 지정해준다.
밑에 예제에서 name의 type은 'kim'이 되므로, 오류가 안뜬다.

또한 object안에 있는 모든 속성을 readonly로 바꿔주기 때문에,
자료.name = 123; 하면 오류뜸

==> object 자료를 완저니 잠가놓고 싶을때 쓰자

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


function 내함수(a : 'kim') {
	console.log('hi')
}

내함수(자료.name)  //오류없이 잘된다.
profile
👩‍💻안녕하세요🌞

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

정말 좋은 정보 감사합니다!

답글 달기