특수 타입은 “무엇을 아는가”를 정확히 표현한다

이름을 외우기보다 값의 경계, 모양, 종료, 부재 중 어떤 사실을 타입으로 남길지 먼저 묻는다.

unknown 아직 값의 형태를 모르는가?

외부 입력은 확인 후 사용

unknowntypeof / validatorstring

경계 유지: 좁히기 전에는 속성과 메서드를 쓸 수 없다.

object 원시 값이 아님만 보장하는가?

모양은 아직 모른다

{}[]() => void

속성을 읽으려면 { id: string }처럼 구조를 더 구체화한다.

void · never 함수가 어떻게 끝나는가?

정상 종료와 도달 불가를 구분

void: 값 없이 종료never: 정상 종료 없음

never는 예외·무한 루프·누락 분기 검사에 쓰인다.

null · undefined 값이 없을 수 있는가?

부재를 유니온에 명시

string | nullnumber | undefined

strictNullChecks가 사용 전 처리를 강제한다.

any와의 차이 any는 검사를 우회하지만, unknown은 검증 지점을 코드에 남긴다.