Overload signatures describe call shapes; one implementation signature must be compatible with all overloads.
Implementation signature
Callers see overloads; the implementation must accept the union of all cases. Keep overload sets small—large sets often mean a single options object is clearer.
Self-check
- Write two overloads for
formatDate(date: Date): stringandformatDate(ts: number): string.
In code review, prefer a single options object when overload count grows past two or three signatures.
Practice: Apply function-overloads in the playground, then explain function overloads in one sentence without looking at notes.