TypeScript sometimes struggles to infer generic return types when using method overloading with both synchronous and asynchronous logic due to the complexity and differences between sync and async return types. To resolve this, you can use explicit type annotations or type casting to specify the return types and help TypeScript understand your code.