let userInput: unknown; // any로 바꿔줄 경우 userName = userInput 작동
let userName: string;
userInput = 5;
userInput = "Max";
// userName = userInput; 에러입니다.
우선 unknown은 any와 다르게 작동합니다.
unknown의 경우 엄격한 검사를 진행하기 때문에,
let userInput: unknown; // any로 바꿔줄 경우 userName = userInput 작동
let userName: string;
userInput = 5;
userInput = "Max";
if(typeof userInput === "string"){
userName = userInput;
}
if문을 통해 type 검사를 한 번 더 진행하면 에러를 막을 수 있습니다.
if문 없이 userName = userInput 작성 할 경우 에러를 반환합니다.
function generateError(message: string, code: number): never {
throw {message: message, errorCode: code};
}
generateError("Error 발생", 500);
함수에 마우스를 올리면 void 값을 올려서 확인할 수 있지만, never값을 적어줘 type의 절대값을 적용해 줄 수 있다.
never를 사용하는 경우, 의도하지 않은 api 사용 방지, 조건문에 도달할 수 없게 막을 수 있습니다.