Function overloads define multiple call signatures for a single function. Here's how to use them effectively.
Basic Syntax#
Different Return Types#
Object Parameter Overloads#
Optional Parameters#
Callback Signatures#
Generic Overloads#
Method Overloads#
Event Handler Overloads#
API Response Types#
Constructor Overloads#
Interface Method Overloads#
Narrowing with Overloads#
Best Practices#
Design:
✓ Order overloads specific to general
✓ Keep implementation signature broad
✓ Document each overload
✓ Use for distinct behaviors
Patterns:
✓ Different return types
✓ Optional callback vs Promise
✓ Type narrowing by parameter
✓ Builder pattern APIs
Avoid:
✗ Too many overloads (> 4-5)
✗ Overloads for default values
✗ Complex conditional returns
✗ Overloads that could be unions
Alternatives:
✓ Union types when simpler
✓ Generics for type inference
✓ Conditional types for complex cases
✓ Separate functions for clarity
Conclusion#
Function overloads provide multiple type-safe ways to call a function. Use them when the return type depends on input types, or when different parameter combinations have distinct behaviors. Order overloads from most specific to least specific, and keep the implementation signature compatible with all overloads.