Overload

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

여러 호출 시그니처가 API 표면을 만들고, 하나의 구현 시그니처가 모든 경우를 처리한다.

오버로드 구성

시그니처 설계

오버로드 시그니처

사용자가 호출할 수 있는 타입 조합과 반환 타입을 여러 줄로 선언한다.

구현 시그니처

모든 오버로드를 수용할 수 있도록 유니온이나 넓은 타입으로 실제 함수를 작성한다.

타입 가드

런타임에는 typeof, Array.isArray 같은 분기로 실제 처리 경로를 고른다.

호출 입력시그니처 선택구현 실행반환 추론
호출 계약

반환 타입이 인자 조합에 따라 달라질 때 오버로드가 유니온보다 의도를 선명하게 만든다.