오버로드는 호출부 계약과 실제 구현을 분리한다

사용자는 여러 공개 시그니처 중 하나로 호출하고, 런타임은 하나의 구현 본문에서 타입 가드로 분기한다.

1
Overload list
사용자가 호출할 수 있는 좁은 계약을 나열
2
Select
인자 조합에 맞는 시그니처를 선택
3
Implementation
넓은 타입으로 모든 경우를 수용
4
Guard
typeof, Array.isArray 등으로 실제 처리
5
Return
선택된 시그니처의 반환 타입으로 추론
점검기준
좋은 경우입력 조합에 따라 반환 타입이 달라짐
주의구현 시그니처는 호출 가능한 API 표면이 아님
판단유니온보다 호출 결과가 더 명확할 때 사용

핵심 오버로드의 목적은 구현을 늘리는 것이 아니라 호출 표면을 선명하게 만드는 것이다.