오버로드는 호출부 계약과 실제 구현을 분리한다
사용자는 여러 공개 시그니처 중 하나로 호출하고, 런타임은 하나의 구현 본문에서 타입 가드로 분기한다.
Overload list
사용자가 호출할 수 있는 좁은 계약을 나열
Select
인자 조합에 맞는 시그니처를 선택
Implementation
넓은 타입으로 모든 경우를 수용
Guard
typeof, Array.isArray 등으로 실제 처리
Return
선택된 시그니처의 반환 타입으로 추론
| 점검 | 기준 |
|---|---|
| 좋은 경우 | 입력 조합에 따라 반환 타입이 달라짐 |
| 주의 | 구현 시그니처는 호출 가능한 API 표면이 아님 |
| 판단 | 유니온보다 호출 결과가 더 명확할 때 사용 |
핵심 오버로드의 목적은 구현을 늘리는 것이 아니라 호출 표면을 선명하게 만드는 것이다.