호출은 오버로드를 보고, 실행은 구현 본문으로 들어간다
TypeScript는 호출 시그니처를 먼저 고르고 JavaScript 실행은 하나의 함수 본문에서 일어난다.
호출식의 인자 목록과 문맥 타입 수집
공개 오버로드 시그니처만 후보로 검사
넓은 구현 시그니처가 모든 케이스를 처리
타입 가드로 실제 값의 형태를 좁혀 실행
| 구분 | 역할 |
|---|---|
| string input | 문자열용 공개 계약 선택 |
| array input | 배열용 공개 계약 선택 |
| 순서 | 더 구체적인 시그니처를 먼저 두어 의도한 추론 확보 |
핵심 오버로드를 읽을 때 공개 계약과 내부 처리 타입을 섞어 보면 안 된다.