| never타입
function sendError(): void{
throw{ errorCode: 500, message: "internal server error"};
}
const result = sendError();
console.log("result :", result);
⬇️
function sendError(): never{
throw{ errorCode: 500, message: "internal server error"};
}
const result = sendError();
console.log("result :", result);
never 타입
함수가 항상 예외를 던지거나 무한 루프에 빠져서 결코 정상적으로 종료되지 않는 경우에 사용. "절대로 발생하지 않는 값"을 나타낸다.
sendError 함수의 구현부에서는 throw 키워드를 사용하여 예외를 던지고 있다. 예외는 { errorCode: 500, message: "internal server error" }라는 객체 형태로 정의되어 있다. 이 예외를 던지면 함수가 즉시 실행이 중단되고, 예외가 처리되지 않은 상태로 남게 된다. 이 경우 함수는 정상적으로 값을 반환하지 않으며, 따라서 never 타입을 가진다.
result라는 변수에 sendError() 함수를 호출한 결과를 할당하고 있다.
그러나 sendError 함수가 never 타입을 반환하기 때문에, result 변수의 타입은 never가 된다.
console.log("result :", result); 구문은 result 변수의 값을 출력하려는 것이다.
하지만 result 변수의 값은 never 타입이기 때문에, never 타입의 값을 출력하는 것은 의미가 없다.
실제로 never 타입의 값을 출력하면 아무런 값도 출력되지 않는다.
never와 void의 차이
void
함수의 반환 타입으로 사용되며, 함수가 값을 반환하지 않을 때 사용
void 타입은 함수가 실행된 후 아무런 값을 반환하지 않음을 나타냄.
void 타입을 가진 함수는 return 구문을 사용하여 명시적으로 값을 반환하지 않아야 함
never
함수의 반환 타입으로 사용되며, 함수가 예외를 던지거나 무한 루프에 빠져서 결코 정상적으로 종료되지 않는 경우 사용
never 타입은 "절대로 발생하지 않는 값"을 나타냄.
never 타입을 가진 함수는 값을 반환하지 않고, 함수 실행이 중단되기 때문에 함수의 마지막에 도달하는 것이 불가능함.
즉, void 타입은 함수가 값을 반환하지 않을 때 사용되고, never 타입은 함수가 결코 정상적으로 종료되지 않거나 예외를 던지는 경우 사용
'웹 개발 > #️⃣ TypeScript' 카테고리의 다른 글
TS | 클래스 - 접근제한자와 getter setter (0) | 2023.06.01 |
---|---|
TS | null과 undefined (0) | 2023.05.30 |
TS | 함수 타입과 type (0) | 2023.05.30 |
TS | enum과 literal (0) | 2023.05.30 |
TS | 배열과 튜플 (0) | 2023.05.30 |