Same function name but with a different signature (list of parameters)
Their will be then the same function name or an operator but that manipulates two different objects (data structure, type).
declare function getWidget(n: number): Widget;
declare function getWidget(s: string): Widget[];
built-in operators such as addition (+), can be:
The two operations work on different types of operands and require different functions.