Many folks haven't followed the evolution of C# over the years after encountering it in the past when it was bound to the Windows-only .NET Framework (dark days...) and have strong, lingering misperceptions about C# and .NET today.
Over the years, .NET and C# have evolved heavily (as has Microsoft) and now "modern .NET" -- e.g. .NET 9 -- is open source, builds and deploys cross-platform with ease, and the development experience is well-supported whether you're on Windows, Mac, or Linux.
During that time, the language design of both C# and TypeScript (JavaScript as well) have converged more than other languages. The two languages are now remarkably similar in their core syntax such that developers that know one can typically pick up the other fairly easily.
This guide aims to provide a walkthrough of just how similar these two languages are and in fact can be used bi-directionally. In many cases, it will highlight where C# and .NET can solve some of the pain points that many teams using TypeScript on the backend will no doubt encounter.