Polymorphism
Polymorphism in its pure definition means to have many shapes. When this is applied to software development, it applies to a wide variety of techniques that enable us to use a variety of different objects or methods to perform a task. In pure OOP languages, polymorphism refers to the use of method overloading, operator overloading, and method overriding.
Method overloading
Method overloading is the idea of providing multiple methods with different call signatures but the same name. We discussed this earlier in Chapter 2, TypeScript Basics, so this will be a short review of that. As we saw earlier, we are able to provide multiple call signatures for a single function as long as the parameters all share a common base type. The ICommunicator interface shown in the following code provides an example of this:
interface ICommunicator { speak(message: string); speak(message: number); sipeak(message: boolean); speak(message: any); } class Communicator implements ICommunicator...