let a : unknown;
API로 부터의 응답을 받는 상황에서 특정 변수가 어떤 타입일지 알 수 없을 때 unknown으로 지정할 수 있다.
let a : unknown;
let b = a + 1
그래서 위와 같은 코드는 a가 unknown상태이기 때문에 타입스크립트에서 막게 된다.
let a : unknown;
if(typeof a === 'number') {
let b = a + 1
}
if(typeof a === "string") {
let b = a.toUpperCase();
}
이 경우엔 아무런 문제 없이 작동하게 된다.
void는 아무것도 return하지 않는 함수를 대상으로 사용한다.
function hello() {
console.log('x')
}
이런 경우를 말한다.
function hello() {
console.log('x')
}
const a = hello();
a.toUpperCase()
이러한 작업은 허용되지 않는다. void 타입엔 toUpperCase가 없기 때문에.
never은 함수가 절대 return하지 않을 때 발생한다.
function hello() : never {
return "x"
}
따라서 위와 같은 함수는 실행되지 않는다.
function hello() : never {
throw new Error("xxx")
}
이 경우엔 새로운 오류를 발생시키고 아무런 문제없이 동작한다.