Strong static typing, a hill I'm willing to die on
The only thing that really frustrates me in this discussion is that it&#x27;s all about how people &quot;feel&quot; and without empiric evidence.<p>The research out there found no meaningful difference between both styles (unless there&#x27;s newer research I haven&#x27;t seen?) and people keep taunting around how their preferred side is undoubtedly the right one.<p>That&#x27;s just like, your opinion man.<p>Personally I like typed languages but the type systems in languages like TypeScript are simply insufficient. You still end up with runtime bugs because you can&#x27;t actually use those types at runtime. You can&#x27;t encode a lot of the runtime logic into the type system so you&#x27;re still manually checking impossibilities everywhere. I find myself even having to create local variables just to make typescript detect an obvious condition.<p>If a type system could basically remove the need for me to think about runtime bugs, then that&#x27;s an absolute killer feature that I doubt anyone would argue against. But most languages don&#x27;t provide that, so you&#x27;re stuck in this halfway point where you have all this overhead, some benefits, but you still can&#x27;t 100% trust your types.<p>As for why there are no meaningful differences in bugs, speed, etc my guess is that it all evens out. Without the type system safety net you are much more likely to test your code and as a result less bugs go in. On the other side people rely too much on the type system that&#x27;s not good enough and then still end up with the same amount of runtime bugs. On one side you write code faster, but you have to test more, so it also evens out with writing more boilerplate, but with less tests.<p>I really wanted some hard research on this, but I know it&#x27;s a hard one.