never 타입이란
never는 값이 존재할 수 없는 상태를 의미합니다. 이는 주로 두 가지 경우에 나타납니다.
- 함수가 끝없이 실행되어 반환되지 않을 때(무한 루프)
- 함수가 항상 예외를 던져 정상 종료되지 않을 때
never의 기본 특성
never 타입의 변수에는 어떤 값도 할당할 수 없습니다. 예를 들어, 아래와 같이 never 타입 변수에 문자열, 숫자, 불린 등의 값을 할당하면 모두 컴파일 에러가 발생합니다.
let impossible: never;
// 아래 할당들은 모두 오류 발생 (타입 'string', 'number', 'boolean'은 never에 할당할 수 없음)
// impossible = "hello";
// impossible = 100;
// impossible = false;
이처럼 never 타입은 실제로 어떤 값도 담을 수 없음을 명시적으로 표현합니다.
무한 루프를 통한 never 반환
무한 루프에 빠진 함수는 정상적으로 종료되지 않으므로, 반환값이 존재할 수 없습니다. 이러한 경우, 함수의 반환 타입을 never로 지정합니다.
function monitorSystem(): never {
while (true) {
console.log("시스템 감시 중...");
}
}
// monitorSystem(); // 호출 시 무한 실행
이 함수는 종료되지 않음을 타입으로 명확히 드러내며, 호출자가 반환값을 기대하지 않도록 합니다.
항상 예외를 던지는 함수
특정 조건에서 반드시 예외를 던지는 함수도 never 타입을 반환합니다. 이런 함수는 정상적인 반환값을 가질 수 없기 때문에, 반환 타입을 never로 선언합니다.
function panic(message: string): never {
throw new Error(`치명적 오류: ${message}`);
}
function validateNumber(input: unknown): number {
if (typeof input !== "number") {
panic("숫자만 허용됩니다!");
}
return input;
}
console.log(validateNumber(10)); // 출력: 10
// validateNumber("문자"); // 오류 발생: 치명적 오류: 숫자만 허용됩니다!
'TypeScript' 카테고리의 다른 글
[TypeScript] 타입 별칭(Type Aliases) 이해하기 (0) | 2025.02.24 |
---|---|
[TypeScript] Union 타입 (0) | 2025.02.24 |
[TypeScript] unknown 타입 (0) | 2025.02.24 |
[TypeScript] 객체를 생성하는 5가지 방법 (0) | 2025.02.24 |
[TypeScript] any 타입 (1) | 2025.02.24 |