1. Narrowing vs. Assertion vs. Casting 차이점
| 개념 |
설명 |
실행 방식 |
주의점 |
| Narrowing |
타입 가드를 사용해 특정 타입으로 좁혀가는 과정 |
런타임에서 타입 체크 후 실행 |
자동으로 타입이 결정됨 |
| Assertion |
개발자가 "이 타입이 맞다"라고 선언 |
강제 변환 (as) |
잘못된 경우 런타임 오류 발생 가능 |
| Casting |
한 타입을 다른 타입으로 변환 |
명시적 변환 (Number(x), String(y)) |
변환 불가능한 값은 오류 발 |
🚨 void vs never 차이점
| 구분 |
void |
never |
| 의미 |
값을 반환하지 않음 |
절대 반환되지 않음 |
| 정상 종료 가능 여부 |
✅ 가능 |
❌ 불가능 (예외 발생 또는 무한 루프) |
| 사용 예제 |
console.log(), return; 함수 |
throw, while (true) |
function doSomething(): void {
console.log("작업 수행"); // 정상적으로 종료됨 (void 사용 가능)
}
function throwError(): never {
throw new Error("절대 실행 종료되지 않음"); // 실행 중 예외 발생
}