1. unknown


ex)

let a : unknown;

let b = a + 1; // error

if(typeof a === 'number'){
  let b = a + 1; // 정상적으로 작동
}
if(typeof a === 'string'){
  let b = a.toUpperCase(); // 정상적으로 작동
}

2. void


아무것도 return 하지 않는 함수에 사용

function printHello() : void {
  console.log('hello');
}

3. never


함수가 절대 return하지 않을 때 발생한다.

function changeNameType(name : string | number) {
  if(typeof name === 'string'){
    name // string
  }
  else if(typeof name === 'number'){
    name // number
  }
  else{
    name // never => 이 코드는 절대 실행되지 않아야한다.(never)
  }
}