본문 바로가기

TYPESCRIPT

[타입스크립트] void / never / unknown

타입스크립트에서 가장 중요한 것은 Type Checker와 소통하는 것!

 

unknown

변수의 타입을 미리 알지 못할 때 사용함

any타입과 비슷하지만 any보다 unknown이 더 안전합니다.

이유는 unknown값으로 작업을 수행하는 것은 합법적이지 않기 때문입니다.

let a : unknown;
// api에서 정보를 전달받았을 때, 타입을 모를 경우 
// a의 타입을 unknown로 설정 
 
 let b =a +1
 // a의 타입이 unknown이기 때문에 오류 
 
 if(typeof a === 'number'){
 	let b =a +1
    //a가 number이기 때문에 사용가능 
    } 
    
 if(typeof a === "string"){
 	let b = a.toUpperCase();
    }

 

void

void는 값을 반환하지 않는 함수의 반환 값을 나타냅니다.

함수에 return 문이 없거나 해당 return 문에서 명시적 값을 반환하지 않을 때 항상 유추되는 타입입니다.

function hello() {
	console.log('x')
    }
    // 위 함수는 아무것도 return 하지 않음 
    
 const a = hello();
 a.toUpperCase()  // error (a :void)

never 

함수가 절대 return 하지 않을 때 발생 (값을 반환하지 않을 때)

함수가 예외를 throw하거나 프로그램 실행 종료함을 의미함 

// return하지 않고 오류를 발생시키는 함수 
// 기본 함수였다면, 오류를 발생시키지만 error를 return하기 때문에 정상 실행
function hello() : never  { 
	throw new Error("xxx") 
    }
    
// 타입이 두가지일 수도 있는 상황에서 발생하는 never 
function hello(name :string|number ){
	// 타입이 올바르게 들어왔다면 string 이나 number 중에서 실행 
	if(typeof name === "string") { 
    		name 
    }else if(rtpeof name === "number"){
    		name 
    }else{ // 이 코드는 실행되지 않을 코드 
    		name
    }
728x90