special types

특수 타입 흐름

unknown, object, void, never, null, undefined는 값의 모양보다 사용 가능한 범위와 실행 흐름을 설명할 때 힘을 발휘한다.

unknown vs any

guard first

둘 다 어떤 값이든 받을 수 있지만 unknown은 검사 전 사용을 막는다.

unknown: 좁힌 뒤 속성 접근 any: 검사 없이 통과되어 오류를 숨김

object 사용 점검

shape wins

object는 원시 타입이 아님만 말한다. 구체 속성이 필요하면 구조를 직접 적는다.

obj.name은 바로 읽을 수 없다 { name: string }처럼 의도를 드러낸다

void와 never

흐름

void는 함수가 끝까지 오지만 값이 없고, never는 끝까지 도달하지 않는다.

void: 로그, 저장, 알림처럼 부수 효과 never: throw 또는 무한 루프

null과 undefined

strict

strictNullChecks에서는 비어 있을 수 있는 값을 유니온으로 분명히 표시한다.

string에는 null을 바로 넣지 않는다 string | null처럼 가능성을 드러낸다

반환 타입의 실행 흐름

return analysis

void

호출 작업 수행 값 없이 복귀

never

호출 예외 또는 반복 복귀 지점 없음