더 엄격한 타입을 지정해봅시다
특정 글자나 숫자만 가질 수 있게 제한을 두는 타입 literal type
자동완성 힌트 주는 장점을 가졌따.
let john :'멍청이'|'바보';
let kim :'솔로';
john이라는 변수는 이제 '멍청이' 또는 '바보' 라는 글자만 할당할 수 있습니다.
kim이라는 변수는 이제 '솔로' 라는 글자만 할당할 수 있습니다.
함수예제
👇return 값 지정
function 함수(a : 'hello') :1 | 0 | -1 {
return 0
}
함수('hello')
function rock(a : '가위'|'바위'|'보') :('가위'|'바위'|'보')[]{
return ['가위','보']
}
var 자료 = {
name : 'kim'
}
==>자료.name 은 'kim'입니다.
function 내함수(a : 'kim') {
console.log('hi')
}
내함수(자료.name)
==>오류뜹니다. 🙅🙅
내함수(a : 'kim') 에서'kim'이라는 타입만 들어올수있음.
자료.name 은 type이 string이므로 안됨.
object value 값을 그대로 타입으로 지정해준다.
밑에 예제에서 name의 type은 'kim'이 되므로, 오류가 안뜬다.
또한 object안에 있는 모든 속성을 readonly로 바꿔주기 때문에,
자료.name = 123; 하면 오류뜸
==> object 자료를 완저니 잠가놓고 싶을때 쓰자
var 자료 = {
name : 'kim'
} as const
function 내함수(a : 'kim') {
console.log('hi')
}
내함수(자료.name) //오류없이 잘된다.
정말 좋은 정보 감사합니다!