1. 개요
원래는 JavaScript에서 사용되는 연산자로, 표현식을 평가한 뒤, 항상 undefined
를 반환한다는 특징이 있다.
2. 특성
2.1. 일반적 특성
void
가 붙을 경우 항상 undefined
가 반환된다.
대표적인 예시는 다음과 같다.
console.log(void 0); // undefined
console.log(void 'hello'); // undefined
let a = 5;
console.log(void (a = 10)); // undefined
console.log(a); // 10
2.2. TypeScript의 특성
void
는 TypeScript에서 반환 타입으로도 쓸 수 있는데, ‘이 함수는 반환값이 없음’을 표현하기 위한 목적으로 사용된다. (사실 void
특성상 undefined
를 반환한다)
반환 타입을 void
로 지정했음에도 함수 내부에서 명시적으로 값을 반환했을 때 컴파일 에러가 발생하지 않는다는 점에 유의해야 한다.
const foo: () => void = () => {
return 100; // 에러 X
};
const bar = foo(); // bar의 타입은 void로 잡힌다. 하시만 실제 들어오는 값은 100.
비슷한 타입으로 never 타입이 있다.
never
가 반환 타입으로 올 경우, 어떠한 경우에도 무언가를 반환하지 않음을 의미하는데, 함수가 항상 예외(에러)를 던지거나, 무한 루프에 빠지는 경우에 해당한다.
const foo: () => never = () => {
throw Error();
}
const bar: () => never = () => {
while (true) {}
};