never와 unknown 타입

규갓 God Gyu·2025년 4월 4일

면접질문

목록 보기
109/142

never는 절대 발생할 수 없는 값을 나타내는 타입
함수가 값을 반환하지 않고 항상 예외를 던지거나 무한 루프를 도는 경우, 그 반환 타입은 never
never는 bottom type 이라고도 불리며 모든 타입의 하위 타입
ex

function throwError(message:string):never {
	throw new Error(message);
}

이 함수는 어떤 값도 반환하지 않고, 실행될 경우 예외를 던져서 never 반환 타입 가짐
이외에도 if-else, switch문을 통한 타입 검사 과정에서 허용된 케이스에 포함되지 않은 경우 대응하기 위해 never 사용

unknown
알 수 없는 값을 나타내는 타입
외부 API 호출 결과와 같이 구체적인 타입을 미리 알 수 없고, 런타임에 타입이 결정되는 경우 사용
any와 비슷하지만 더 안전한 방식
any는 어떤 값이든 허용하기 때문에 타입 안정성 떨어지지만,
unknown은 특정한 타입으로 사용하려면 타입을 좁혀야 함
unknown은 any와 함께 top type으로 불리며 모든 타입의 상위 타입
ex

function processUnknownValue(value: unknown){
	if(typeof value === 'string'){
    	//
    }else if(typeof value === 'number'){
    	//
    }else {
    	//
    }
}

이처럼 unknown은 직접 타입을 강제할 수 없으며, 타입을 좁혀야 사용할 수 있다는 점에서 any보단 안전한 선택
이러면 예상치 못한 타입 오류 방지할 수 있음

never, void 타입 차이점

void는 함수가 명시적으로 값을 반환하지 않음을 의미
never타입은 아예 반환될 수 없는 상태
ex - void는 반환값 없이 return; 하는 함수에서 사용될 수 있지만,
never는 예외를 던지거나 무한루프에 빠지는 함수에만 적용될 수 있음
즉,
void는 정상적인 종료를
never는 실행이 끝날 수 없는 함수에 적용되는 타입

profile
웹 개발자 되고 시포용

0개의 댓글