By all accounts, TypeScript has been a big success for Microsoft. I've seen loads of people sparkle with joy from dousing JavaScript with explicit types that can be checked by a compiler. But I've never been a fan. Not after giving it five minutes, not after giving it five years. So it's with great ...
By all accounts, TypeScript has been a big success for Microsoft. I've seen loads of people sparkle with joy from dousing JavaScript with explicit types that can be checked by a compiler. But I've never been a fan. Not after giving it five minutes, not after giving it five years. So it's with great pleasure that I can announce we're dropping TypeScript from the next big release of Turbo 8.
Static typing is objectively better for any non-trivial project / script. I don't have any idea why anyone who has any degree of experience with this doesn't understand it.
TypeScript does suck, and I almost understand moving away to JS. JS is like a friend with benefits; it makes no promises, and there are no false hopes between you. Well designed statically types languages like Rust are like marriage; you trust it, and respect it a lot for that. It's more complex but in a way that gives you confidence. TypeScript, on the other hand, makes promises but lies to you. It also makes you do shitty things to uphold those promises. In a way, that's worse than making none at all.
I appreciate the imagery you bring here, but I'm quite interested in concrete examples of how TS "makes promises but lies". Don't shoot me (just yet), I'm not a TS developer, just a curious person wanting to become wiser.
Not OP, but my experience with TS is that the promises of type safety only works if all you’re doing is to interact with other TS code. As soon you need to interact with vanilla JS, which is often, all the type safety guarantees you were promised goes through the window.
So it’s some kind of weird hybrid. I prefer statically typed languages myself, but TS is not really it. It’s nice when it works though.
IMO one of the most fundamental, important aspects of type systems is the invariants defined in your model; if I say a field is an array, that needs to be the source of truth and enforced throughout the program. That's the whole point. Same with if something is immutable or other aspects of the type.