호출은 오버로드를 보고, 실행은 구현 본문으로 들어간다

TypeScript는 호출 시그니처를 먼저 고르고 JavaScript 실행은 하나의 함수 본문에서 일어난다.

Call input
호출식의 인자 목록과 문맥 타입 수집
Overload candidates
공개 오버로드 시그니처만 후보로 검사
Implementation body
넓은 구현 시그니처가 모든 케이스를 처리
Runtime branch
타입 가드로 실제 값의 형태를 좁혀 실행
구분역할
string input문자열용 공개 계약 선택
array input배열용 공개 계약 선택
순서더 구체적인 시그니처를 먼저 두어 의도한 추론 확보

핵심 오버로드를 읽을 때 공개 계약과 내부 처리 타입을 섞어 보면 안 된다.