티스토리 뷰
타입스크립트의 never 타입은 코드 흐름을 분석할 때 유용하게 사용되는 고급 타입입니다. 이 타입은 어떠한 값도 가질 수 없는 타입을 나타내며, 특히 함수가 반환되지 않는 경우(예를 들어, 함수 내부에서 예외를 발생시키거나 무한 루프에 빠지는 경우)에 사용됩니다. 또한, 타입스크립트에서 never 타입은 타입 시스템의 중요한 부분을 차지하며, 타입 호환성과 안정성을 향상시키는 데 기여합니다.
never 타입의 정의 및 필요성
never 타입은 타입스크립트에서 "값이 없다"는 표현하는 데 사용됩니다. 즉, 함수가 정상적으로 종료되지 않아 값을 반환하지 않을 때 이 타입을 사용합니다. 예를 들어, 함수가 예외를 던지거나 계속 실행되어 종료되지 않는 경우에 해당합니다. 이러한 특징 때문에 never는 흔히 "uninhabitable type" 또는 "bottom type"이라고 불립니다.
function throwError(errorMsg: string): never {
throw new Error(errorMsg);
}
function infiniteLoop(): never {
while (true) {
}
}
요런 느낌으로 throwError 함수와 infiniteLoop 함수는 결코 정상적인 값을 반환하지 않습니다. 따라서 이들의 반환 타입을 never로 지정하여, 타입스크립트 컴파일러가 이 함수들이 종료되지 않거나 예외를 던짐을 인지할 수 있도록 합니다
never와 void의 차이
void 타입은 함수가 아무런 값을 반환하지 않을 때 사용되며, 일반적으로 undefined를 반환합니다. 반면, never 타입은 함수가 아예 반환을 하지 않음을 의미합니다. 따라서 void와 never는 사용 목적이 다르며, 이를 구분하는 것이 중요합니다.
never 타입의 고급 사용법
never 타입은 유니언 타입이나 제네릭에서도 유용하게 사용됩니다. 예를 들어, 유니언 타입에서는 never가 포함되어 있어도 무시되며, 제네릭에서는 특정 조건에 따라 타입을 좁히는 데 사용될 수 있습니다
type Foo = string | never; // Foo는 string 타입과 동일하다.
function impossibleType<T>(x: T & never): never {
throw new Error("This function can't be called");
}
결론
함수가 예외를 던지거나 반환하지 않을 때, 또는 코드 로직상 도달할 수 없는 경우에 never 타입을 사용함으로써 프로그램의 안정성을 높일 수 있습니다. 이와 같은 특성 때문에 never 타입은 타입스크립트를 사용하는 개발자들에게 반드시 이해하고 있어야 할 중요한 타입 중 하나입니다. (빈번히 사용할 것 같지는 않습니다.)
더 자세한 정보와 사용 예제는 TOAST UI 블로그에서 확인할 수 있습니다.
'프로그래밍 > React' 카테고리의 다른 글
AxiosRequestConfig와 InternalAxiosRequestConfig (0) | 2024.04.28 |
---|---|
UseEffect와 UseLayoutEffect 차이에 대해 (0) | 2024.04.22 |
- Total
- Today
- Yesterday
- EPL 이적시장
- 다비드 실바
- 사네
- 맨시티 이적시장
- 에펨
- 르로이 사네
- 펩
- 맨체스터시티
- 또사카
- 키노사키
- 칸셀루
- 해외 여행기
- 여름 이적시장
- 제수스
- 펩 과르디올라
- 키보드
- 영등포 맛집
- 맨체스터 시티
- 로드리
- 매과이어
- ManCity
- 앙헬리노
- 맨시티
- 교토
- 교또
- 무신사
- 오타멘디
- 이적시장
- 맨체스터 시티 이적시장
- 펠릭스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |