TypeScript

[TypeScript] Never

최성2 2022. 3. 3. 22:16

함수 return 값에 붙일 수 있는 타입으로,

1. return 값이 없어야 하고, 2. 함수 실행이 끝나지 않아야 한다(=endpoint가 없어야 한다)

function func() :never{
  while ( true ) {
    console.log(123)
  }
}

//or

function func() :never{
  throw new Error('에러메세지')
}

 

* while 은 소괄호의 조건식이 true일 경우 계속 내부 코드를 실행한다 👉 무한 실행

* throw new Error( )는 강제로 에러를 발생시킨다

 

 

함수 내부에서 코드 실행이 끝나는 함수는 never를 붙일 수 없다

function func(){
  console.log(123)
}

 

* 모든 함수는 return undefined 를 가지고 있다(return이 없는데 함수가 실행되는 이유)

 


 

return하고 싶지 않을 때는 보통 void 타입을 사용한다. never 타입은 쓸 일이 없다는 뜻이다.

그럼에도 알아둬야 하는 이유는 코드를 잘 못 짰을 때 자동으로 등장하기 때문이다

 

 

never 타입이 등장하는 경우

 

 

1. 어딘가 이상한 narrowing

: parameter가 string 타입 밖에 없는데 else를 사용했을 때 never가 등장한다

function func(parameter: string) {
  if(typeof parameter === "string"){
    console.log(parameter)
  } else { 👈
    console.log(parameter) 
  }
}

 

 

2. 어떤 함수 표현식

: 아무것도 return 하지 않고, 끝나지도 않을 경우 never 타입이 자동으로 할당된다

let func = function (){
	throw new Error()
}

 

 

📌 결론

: never가 보이는 경우 코드를 수정하자!

 

 

Ref

https://codingapple.com/course/typescript-crash-course/

 

빠르게 마스터하는 타입스크립트 - 코딩애플 온라인 강좌

  누구나 마음 한켠엔 나만의 웹서비스를 만들고 싶어합니다. 프론트엔드는 어찌저찌 하겠는데 서버 만드는게 어렵고 귀찮다고요? 그렇다면 Firebase를 쓰십시오.   구글이 웹서버를 대신 만들어

codingapple.com

 

 

'TypeScript' 카테고리의 다른 글

[TypeScript] Narrowing ++  (0) 2022.03.03
[TypeScript] Rest, Destructuring Type  (0) 2022.02.25
[TypeScript] Interface  (0) 2022.02.23
[TypeScript] Strict, HTML 조작할 때 주의점  (0) 2022.02.19
[TypeScript] Function, Method alias Types  (0) 2022.02.18