티스토리 뷰

🍉 void 타입

아무런 값도 없음을 의미하는 타입

아무런 값도 반환하지 않는 함수의 반환값 타입 또는 변수의 타입을 정의할 때 사용한다.

// 문자열을 반환하는 함수
function func1():string {
    return "hello"
}

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

// 변수에도 void 타입을 정의할 수 있음
let a:void;

단, void 타입의 변수에는 undefined 이외의 다른 타입의 값은 담지 못한다.

하지만 tsconfig.json에 엄격한 null 검사(strictNullChecks) 옵션을 해제(False)로 설정하면 특수하게 void 타입의 변수에 null 값을 담을 수 있다.

// tsconfig.json
{
    "compilerOptions": {
    ...
      "strictNullChecks": false,
    },
	...
  }
  
  // chapter7.ts
  let a:void;
  a=null;

 

현재 5.1 버전으로 업데이트되면서 아무것도 반환하지 않는 함수의 반환갑 타입으로 undefined를 명시해도 문제가 발생하지 않는다.

https://devblogs.microsoft.com/typescript/announcing-typescript-5-1/#easier-implicit-returns-for-undefined-returning-functions

 

Announcing TypeScript 5.1 - TypeScript

Today we’re excited to announce the release of TypeScript 5.1! If you’re not yet familiar with TypeScript, it’s a language that builds on JavaScript by adding constructs called types. These types can describe some details about our program, and can b

devblogs.microsoft.com


(5.0버전)

🍏 그런데 null과 nudefined가 존재하는데 왜 void 타입이 추가로 필요할까?

더보기

반환값 타입을 undefined 또는 null 타입으로 설정하는 경우 함수는 진짜 undefined 또는 null을 반환해야한다.

따라서 return문 자체가 없는 함수의 반환값 타입을 정의해야하는 경우 void 타입을 이용해야 한다.


🍉 never 타입

불가능을 의미하는 타입

함수가 어떠한 값도 반환할 수 없는 상황일 때 해당 함수의 반환값 타입을 정의할 때 사용한다.

// 무한루프를 타는 함수
function func3():never{
    while(true){}
}
// 의도적으로 오류를 발생시키는 함수 -> 반환값 없음
function func4():never{
    throw new Error();
}

 

never타입 또한 변수에 정의할 시 any를 포함한 어떠한 타입의 값도 변수에 담을 수 없다.

tsconfig.json의 strictNullChecks를 false로 설정한 경우에도 null을 담을 수 없다.

 


🔗 타입스크립트 강의

 

한 입 크기로 잘라먹는 타입스크립트 - 인프런 | 강의

문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻‍♀️로 만들어드립니다., 프론트엔드의 피할 수

www.inflearn.com

 

728x90