✅ unknown
let a:unknown
🚫 let b = a + 1 // a의 타입이 unknown이잖아 !
if(typeof a === 'number'){ // 체크를하자. 그럼 허용해줌.
let b = a + 1
}
🚫 let b = a.toUpperCase
if(typeof a === 'string'){
let b = a.toUpperCase()
}
✅ void
아무것도 return하지 않는 함수에서 반환 자료형
function hello() {
console.log('x')
}
const a = hello()
🚫 a.toUpperCase()
✅ never
// void는 아래코드처럼 아무것도 return하지 않는 순수함수.
funtion hello (): void // 굳이 명시하지않아도 됨.
funtion hello () {
console.log("x")
}
// 함수가 절대 return하지 않을 때 never 사용
function hello():never {
throw new Error("zzz")
🚫return "a"
}
// 타입이 두가지인 상황일때
function temp(name:string|number):never {
if(typeof name === "string"){
name
} else if(typeof name === "number"){
name
} else {
name
}
}
if 안에서는 string형의 name 반환
else if 안에서는 number형의 name 반환
else 안에서는 never형의 name 반환
⇒ 즉, 제대로 인자가 전달되었다면 else로 올 수 없음