4 ms·
I'd personally reach for something else than TypeScript. TS tries to type the existing JS world which makes it really big and complex.
by Zababa 5y ago
I'd personally reach for something else than TypeScript. TS tries to type the existing JS world which makes it really big and complex.
- lolinder 5y agoThe advantage TypeScript has for front-end over something that compiles to JS is that you pretty much know what your code will compile to: with a few exceptions, you just strip out the type annotations. Knowing this, you can accurately predict things like performance. In contrast, a compiles-to-JS language can produce code that behaves unexpectedly in its non-functional requirements, and in the worst cases crashes where it shouldn't. That will be less of an issue as compilers get better, and WASM should help a lot, but in the current ecosystem TypeScript produces more predictably good results.
- Zababa 5y agoThat may be true in theory, but I find that people write radically different code in JS and in TS. TS code looks a lot more like C# compared to regular JS code, people use a lot of classes over plain functions and data structures.
- nawgz 5y agoTypeScript is not really big and complex, it's just a type system. The only real pain with TypeScript vs. a language with native static types is that TypeScript requires a bit of extra work to fiddle with the compiler, otherwise when it comes to the code it's flexible but can be used in a very simple manner.
- Zababa 5y ago> TypeScript is not really big and complex, it's just a type system. It's a very complex type system though.
- nawgz 5y agoCan you say some ways it is more complex than other type systems? I think type systems are inherently complex. From my perspective, I feel user-facing complexity is quite low in TypeScript in some key ways. You can write your type declarations anywhere, you can import and export them in a familiar JS-module way, you don't need to explicitly type anything in particular so you can be anywhere on the spectrum from very rigorous types to no types at all / `any` everywhere, and finally it has really good error messages so you rarely are stuck with a type mismatch that makes no sense.