TypeScript Function Overloading Explained | CodeTrail