void와 never

woodstock·2023년 12월 9일
1
post-thumbnail

void와 never

void

void타입은 아무런 값도 없음을 의미하는 타입으로,
보통은 다음과 같이 아무런 값도 반환하지 않는 함수의 반환값 타입을 정의할 때 사용한다.

// 아무런 값도 반환하지 않는 void 타입
function func2(): void {
  console.log("hello");
}
// func1의 함수의 반환값은 string 타입
function func1(): string {
  return "hello";
}

변수에도 void타입을 지정할 수 있는데, void타입의 변수에는 undefined이외의 다른 타입의 값은 담을 수 없다.

하지만, 아래와 같이 tsconfig.jsonstrictNullChecks(업격한 null 검사) 옵션을 false로 설정하면 void타입의 변수에 null값도 담을 수 있게 된다.


never

never타입은 불가능을 의미하는 타입으로, 보통 다음과 같이 함수가 어떠한 값도 반환할 수 없는 상황일 때 해당 함수의 반환값 타입을 정의할 때 사용된다.

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

위 코드에서 함수 func3는 무한루프를 돌기 때문에 아무런 값도 반환할 수 없다.
영원히 종료될 수 없기 때문에 뭔가를 반환한다는 것 자체가 불가능하다.

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

위 코드와 같이 의도적으로 오류를 발생시키는 함수도 never타입으로 변환값 타입을 정의할 수 있다.

또한, 변수의 타입을 never로 정의한다면 any를 포함해 그 어떠한 값도 이 변수에 담을 수 없게된다.

이 때 strictNullChecks옵션을 false로 해도 null값을 담을 수 없다.

profile
해내는 사람

0개의 댓글