오버로드 시그니처
사용자가 호출할 수 있는 타입 조합과 반환 타입을 여러 줄로 선언한다.
여러 호출 시그니처가 API 표면을 만들고, 하나의 구현 시그니처가 모든 경우를 처리한다.
사용자가 호출할 수 있는 타입 조합과 반환 타입을 여러 줄로 선언한다.
모든 오버로드를 수용할 수 있도록 유니온이나 넓은 타입으로 실제 함수를 작성한다.
런타임에는 typeof, Array.isArray 같은 분기로 실제 처리 경로를 고른다.
반환 타입이 인자 조합에 따라 달라질 때 오버로드가 유니온보다 의도를 선명하게 만든다.