Type Narrowing

타입 가드는 런타임 검사를 타입 정보로 바꾼다

유니온 타입은 조건문을 지나며 블록마다 더 구체적인 타입으로 좁혀진다. 그래서 검사 이후에는 해당 타입에만 있는 멤버를 안전하게 사용할 수 있다.

핵심 효과

검사 전에는 공통 멤버만, 검사 후에는 좁혀진 타입의 멤버까지 사용할 수 있다.

입력 변수

id: string | number

아직 실제 값이 문자열인지 숫자인지 확정되지 않았다.

타입 가드

typeof id === "string"

참이면 `id`는 `string`으로 좁혀진다.

else

`string` 가능성이 제거되어 남은 타입은 `number`다.

사용자 정의 가드

user is AdminUser처럼 타입 사실을 전달한다.

블록 안에서 가능한 일

string block

id.toUpperCase() 사용 가능

number block

id.toFixed(2) 사용 가능

after branch

분기 밖에서는 선언된 범위의 타입으로 다시 합쳐진다.