본문 바로가기
FE/TypeScript

타입스크립트의 void와 never 타입

by 코딩의 세계 2025. 4. 25.

let a: void;
a = undefined;

이번에는 타입스크립트의 void와 never 타입을 다룰 것이다. 이번까지의 글로 기초적인 타입은 끝난다. (야호!)

void 타입

void이란 "공허" 즉, 아무것도 없다는 뜻이다. void는 아무것도 없음을 뜻한다. 

예시 코드 >

function func2(): void {
  console.log("hello");
}

물론 다음과 같이 변수의 타입으로도 void 타입을 지정할 수 있다. 그러나 void 타입의 변수에는 undefiend 이외의 다른 타입의 값은 담을 수 없다.

let a: void;
a = undefined;

이때 tsconfig.json에 엄격한 null 검사 옵션을 해제하면 특별하게 void에도 null을 담을 수 있다.

// "strictNullChecks: false" 일 경우
let a: void;
a = undefined;
a = null;

never 타입

never 타입은 "불가능"을 뜻하는 타입이다.

보통 다음처럼 함수가 "어떠한 값도 반환 불가능할 때" 사용한다.

function func3(): never {
  while (true) {}
}

무한 루프가 돌면서 아무것도 반환이 불가능한 함수이다. 참고로 "의도적으로 에러"를 던지는 함수도 가능하다.

예시 코드 >

function func4(): never {
  throw new Error();
}

전체적인 코드 >

// void
 // void -> 공허 -> 아무것도 없다.
 // void -> 아무것도 없음을 의미하는 타입
 
 function func1(): string {
   return 'hello';
 }
 
 function func2(): void {
   console.log('hello');
 }
 
 // never
 // never -> 존재하지 않는
 // 불가능한 타입
 
 function func3(): never {
   while (true) {}
 }
 
 function func4(): never {
   throw new Error();
 }
 
 let anyVar: any;
 
 let a: never;
 // a = 1;
 // a = {};
 // a = "";
 // a = undefined;
 // a = null;
 // a = anyVar;