Earlier quoted context omitted.
> I find it also helps indirectly by making clever code harder to write. The dynamic nature of JavaScript encourages a degree of cleverness and meta-programming that makes things harder to understand. While you can do the same in TypeScript, making the complier happy makes it much harder to do so, which encourages more straightforward code. Interesting. Not having to define types makes JS feel very fluid to me when u…
I just can’t get behind the dynamic typing arguments in the slightest anymore. It doesn’t take any time to type your code. We’re talking seconds on the hour, and the benefits are huge
Ask HN: Is TypeScript worth it?
461–469 of 469 posts
Re: Ask HN: Is TypeScript worth it?
#462I worked in two different team in two different companies where a full rewrite of the core system was done in typescript. The technology itself had few issues like compilation time and inability to run the application locally because of reasons. The new systems were so complicated that everything ended in neverending bike shedding. The people pushing for "everything to be written in typescript including other teams t…
> were a very inflexible crowd Yes because Typescript is so obviously good . It's like saying "the pro-seatbelt people are a very inflexible crowd". Well duh! Typescript compile time is not great but you can set things up so it doesn't block running (i.e. you ignore errors until you want to fix them). There's no issue with running Typescript locally. > It's soul crushing... It's soul crushing to work with people who…
Re: Ask HN: Is TypeScript worth it?
#463There are a few quibbles with TS devs over not implementing certain ideas because it breaks out of the JS superset paradigm, which really makes me wish we had a TS++ or TS# that broke this on purpose but hey.
It does have a lot of problems, but it usually comes down to pre-existing ones. i: yup but like, isn't that true of every framework/language/library? But less so for TS given that it's open source
ii: this is the JS ecosystem in a nutshell, but I think you'll find with any similarly sized ecosystem, built from the thankless efforts of a bunch of amazing individuals in the community that this is true. If you want Oracle level support/docu you gotta pay big $$$ for it
iii: this is very true and my advice to other devs I work with is usually to read more towards the bottom of the error. TS currently gives you a lot of context for the error, much of which may be but isn't always useful.
iv: realistically we have been waiting for a very long time for node.js/browsers to be able to run TS natively. I would be a huge fan of this. Transpilation on large projects can take a good amount of time, but I'd say the larger the project the _better_ the advantage you will have using TS; sure you'll have to deal with trans times but TS can really save your butt when making a breaking change in a large project.
I've used Node.JS pretty much my whole career, whilst I've done a lot of stuff in C# and C/embedded as well my mainstay has been Node & JS and as soon as I could use it, TS.
I remember callback hell, I remember adding console logs every few lines to figure out what the fuck is going on, I remember sitting in the debugger trying to make sense of why various vaguely connected chunks of code weren't working properly. I've seen things you people wouldn't believe. Attack ships on fire off the shoulder of Orion. I watched C-beams glitter in the dark near the Tannhäuser Gate. All those moments will be lost in time, like tears in rain.
Re: Ask HN: Is TypeScript worth it?
#464Earlier quoted context omitted.
> Statically typed languages are known to lead to slower initial > development times I hear people saying that, but I'm not sure I buy it. Is there any research that supports that, and if so, for which languages? Also, what does "initial development" mean here? The first day, week, month, year? And unless your project is trivial, isn't it somewhat important that as much of the initial work as possible provides a soli…
PDF: https://www.ics.uci.edu/~jajones/INF102-S18/readings/23_hane... see conclusions intuitively static typing is less forgiving and forces programmers to write code in a specific form think how much time has been wasted writing Java boilerplate code.
Re: Ask HN: Is TypeScript worth it?
#465I've been working with JavaScript for 20 years. And 5 years with TypeScript. And, well. I still am not convinced. Too much overhead for me. I really dislike typing obvious things and boilerplate. Probably my fluency with JS is to blame. I don't need to see types and autocompletion. If I really need to — I just go to the source and inspect the source code, that is how I familiarise myself with the interface. I also th…
Re: Ask HN: Is TypeScript worth it?
#466Hi there! I work on the TypeScript team and I respect your feedback. Of course I do think TypeScript is worth it, and I'll try to address some of the points you've raised with my thoughts. i. Dependency management is indeed frustrating. TypeScript doesn't create a new major version for every more-advanced check. In cases where inference might improve or new analyses are added, we run the risk of affecting existing bu…
If you're just looking for general feedback, constructor typing has made my life really hard trying to type an existing JS library. In a JS object instance like `const user = new User()` you can call `this.constructor.staticMethod()` and it calls `staticMethod()` on `User` or up the inheritance chain. But TS doesn't type `.constructor` so you're out of luck. In the simple case you call `User.staticMethod()` but that…
This is where I have come to like typescript. 4 years ago, I would have agreed with you, but TS have moved me into a world where I wouldn't write that kind of code any more, and it honestly makes me sick to look at.
Instead I would just do `User.staticMethod` because this accomplishes several things:
- super classes shouldn't know about inheriting classes. If they do, TS gives you interfaces and abstract classes for this purpose.
- it still crawls up the proto chain, so the inheriting class doesn't need to know about every super class
- no risk in `this` pointing to something unintentional (if someone calls or apply's your method)
- shorter code, easier to read IMO, especially for less experienced devsRe: Ask HN: Is TypeScript worth it?
#467Earlier quoted context omitted.
I just can’t get behind the dynamic typing arguments in the slightest anymore. It doesn’t take any time to type your code. We’re talking seconds on the hour, and the benefits are huge
It's not necessarily about the time it takes to type the type definitions. static typing leads to developers trying to represent the "real" world in a bunch of categories and arbitrary boxes. Thats not necessarily a good thing because you can loose much time in bike shedding discussions like "Is a person class still a valid person class if it has no Surname" which do not provide actual value to your product. Recommen…
At least you then know the answer to this while writing code rather than at test time, or worse in prod
Re: Ask HN: Is TypeScript worth it?
#468Earlier quoted context omitted.
If you're just looking for general feedback, constructor typing has made my life really hard trying to type an existing JS library. In a JS object instance like `const user = new User()` you can call `this.constructor.staticMethod()` and it calls `staticMethod()` on `User` or up the inheritance chain. But TS doesn't type `.constructor` so you're out of luck. In the simple case you call `User.staticMethod()` but that…
> you can call `this.constructor.staticMethod()` and it calls `staticMethod()` on `User` or up the inheritance chain. This is where I have come to like typescript. 4 years ago, I would have agreed with you, but TS have moved me into a world where I wouldn't write that kind of code any more, and it honestly makes me sick to look at. Instead I would just do `User.staticMethod` because this accomplishes several things:…
super classes don't need to 'know' about the inheriting classes for static inheritance to work. i.e. here is a simplified problem in the library I'm trying to add types to:
superclass:
static hasField(name) { return false }
constructor() {
if(this.constructor.hasField('id')) { ... }
}
subclass: static hasField(name) { if(name === 'id') return true; }
(it doesn't really look like that but you get the idea). That just works in JS, but in TS you get `Property 'hasField' does not exist on type 'Function'`. In the TS definition there are a couple of ways I can trick it to return the right thing for `this.constructor` but if I'm looking at a JS file in vscode with TS' checkJs flag on then this pattern should just work in my opinion.edit: And I don't think I should have to trick it, that makes the definition harder to read and essentially wrong somehow.