inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

Void와 Never 타입

never 형 문의

해결된 질문

66

민경언

작성한 질문수 34

0

섹션2
18. Void 와 Never 에서 질문이 있습니다.

 

image.png

a 변수에는 아무것도 담을 수도 없고 null 안되고..아무것도..안되는데..

그러면..이런 변수를 뭐하러 작성을 하나요? 어디 쓸모가 있는 건가요??

 

 

 

typescript

답변 2

0

이정환 Winterlood

안녕하세요 민경언님 이정환입니다.

never 타입의 필요성에 대해 질문주신걸까요? 아니면 never 타입으로 정의된 변수 a의 필요성에 대해 질문 주신걸까요?

"이런 변수를 뭐하러 작성을 하나요?" 라는 말씀으로 미루어보아 a 변수의 필요성에 대해 질문하신 걸로 이해하고 답변을 드리자면 ...

해당 변수는 never 타입의 특징(never에는 아무런 값도 포함되지 않는다)을 이해시켜드리기 위해 실습 예제에서 준비한 변수일 뿐 입니다. 따라서 말씀하신 것 처럼 실제 개발을 진행하는 상황에서는 사용할 일은 없습니다.

만약 never 타입 자체의 필요성에 대해 궁금하신거라면 해당 챕터에서 소개해드리는 것 처럼 아무런 값도 반환할 수 없는 함수 (무한루프 or 오류 발생) 등의 반환값 타입으로 활용하거나, 이후에 9섹션에서 다룰 조건부 타입에서 매우 유용하게 활용됩니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 민경언님.

never 타입에 대해 궁금증이 있으신 것 같네요. 간단히 설명하자면, never 타입은 TypeScript에서 절대 발생하지 않는 값, 즉 절대 리턴되지 않는 함수나 상황을 표현할 때 사용합니다. 일반적으로 never 타입은 두 가지 주요한 상황에서 사용됩니다:

  1. 함수의 반환 타입: never 타입은 항상 오류가 발생하거나 함수가 끝없는 루프로 돌아가는 경우에 주로 사용됩니다. 예를 들어, 함수가 항상 오류를 던질 때, 반환할 값이 없기 때문에 never 타입으로 선언합니다.
   function throwError(message: string): never {
     throw new Error(message);
   }
   
   function infiniteLoop(): never {
     while (true) {}
   }
  1. 타입 수호(Type Guards)에서의 사용: 조건부 타입 체킹 중 절대 도달하지 않는 코드 경로를 명시하고 싶을 때도 never 타입을 사용합니다. 확장성을 위해 모든 가능한 경우의 수를 체크하고, 특정 값이 결코 올 수 없음을 명확하게 하기 위해 사용되기도 합니다.

변수에 never를 명시적으로 지정하는 경우는 드물지만, 타입스크립트가 컴파일 타임에 오류를 잡아내는 데 매우 유용합니다. 특히 함수의 반환 타입 검사나 불가능한 코드 경로를 안정적으로 필터링하는 데 많이 활용됩니다.

관련해서 never 타입의 실제 사용 사례나 원리에 대한 더 깊은 이해를 돕고자 한다면, 다음 링크를 참고해 보세요:
- 타입스크립트의 never 타입 이해하기

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

적절한 타입 찾기 React.ChangeEvent<HTMLInputElemen>

0

15

2

outDir 옵션 추가 후 컴파일 오류 질문

0

51

1

호출 시그니처 질문

0

63

2

서로소 유니언 타입이 discriminated union과 동의어 인가요?

0

72

2

조건부타입소개 중 함수오버로딩 활용 시 인수의타입과 함수의 반환값의 타입이 깨지는 문제

0

65

1

할인쿠폰 관련하여

0

151

2

프론트엔드에서의 인터페이스활용

0

90

2

안녕하세요 이정환님!

0

89

1

Node.js 설치에 관한 질문입니다.

0

79

2

함수 타입 호출 시그니처

0

56

1

35강. 모듈 보강은 라이브러리 파일을 직접 편집해야 하나요?

0

62

2

인터페이스 문법이 있는데 타입 별칭 문법은 왜 있나요?

0

114

4

마우스 호버 시 정보

0

90

2

vite으로 리액트 빌드하기를 업데이트해주세요.

1

89

2

타입가드를 만들어 사용하는 이유가 궁금합니다.

0

82

2

섹션 12가 너무 어려운데... 정상이겠죠..?

0

135

2

선생님.. 알고리즘도 강의해주시면안되나요

0

99

2

선생님은 어떻게 이런걸 아세요?

0

127

1

type: module

0

96

2

7:17초 업캐스팅 질문이있습니다!

0

75

1

슈퍼타입질문

1

61

2

프로젝트 설치

0

103

2

enum은 비원시 타입이면서 열거형 타입이 되는건가요?

0

67

2

함수는 함수타입? 객체타입??

1

91

2