I found the comment about soundness in the linked post to be kind of an odd remark. It didn't take me long after reading that to come up with an invalid program that is accepted by Flow's type checker. (The typechecker normally rejects doing math against strings, but accepts this.) let array = [1,2]; array.pop(); array.push('hello'); console.log(array[1] - 3); To be clear, being completely sound is hard! There's a lo…
I guess they fixed it. Try it yourself. http://www.typescriptlang.org/play/ Argument of type 'string' is not assignable to parameter of type 'number' on line 3.
If TypeScript is so great, how come all notable ReactJS projects use Babel?
171–180 of 247 posts
Re: If TypeScript is so great, how come all notable ReactJS projects use Babel?
#172Earlier quoted context omitted.
> I think you meant replacement of JS here. I guess it depends entirely on what you think of JS as a language. I, for one, would rather a language that fixes core issues with JS, instead of just being a superset of JS. If I were aiming to replace JS, I'd fix what Dart does, but I wouldn't stop with merely fixing what Dart does. Dart, despite being an entirely new language, has a less expressive type system than TS. I…
> has a less expressive type system than TS Care to elaborate on that? As for the rest of your comment, I'm with ya. I guess they're reasoning behind that was they thought a lot of development would start out untyped with additional types added as development progressed. I think that assumption didn't pan out, at least that's not how I do it. Official answer from https://www.dartlang.org/faq : "Q. But don’t you need…
Re: If TypeScript is so great, how come all notable ReactJS projects use Babel?
#173Earlier quoted context omitted.
Don't hesitate to jump ship to Mobx. No regrets at all, it was like trading in a Lada for a Toyota. And being written in typescript, the TS support is impeccable.
I wonder if such comments: http://disq.us/p/1bpl2ua are actually based on reality or just a plain rant. I worked with SproutCore, Angular and others that tried to be "smart", and while it was awesome at first, in the long run it was hard to maintain.
https://www.youtube.com/watch?v=TfxfRkNCnmk
The author of MobX explains how MobX works and implements a 50 line version of it (a fast and functional one too, except without the sugary decorator syntax)
You can see the presentation and decide for yourself.
Re: If TypeScript is so great, how come all notable ReactJS projects use Babel?
#174Isn't a large part of the win for typescript the tooling? Specifically the auto completion and documentation that pops up in various typescript enabled editors. Does such a thing exist for Flow? Could it? If it did that would go a lot further to push me to flow than that it just catches more errors. I get huge productivity gains from my editor helping me with API completions etc...
Aside: I tend to do much more with higher order functions than with classes, so Typescript and the like really don't excite me very much. I'm happier to skip the whole transpile and source-map shuffle. Also, I tend to put at least partial JSDoc comments on just about everything, so that an open documentation panel explains things as I move the cursor down the file. Any type annotation is also shown on the function names/params in the structure tree browser.
Finally, autocomplete is not as useful when not using "Enterprise" style naming conventions. E.g. - "inv_acct.load()" vs "checkoutInvoicePayableAccount.asynchronousLazyLoadFromRemoteServer()". Hopefully, between context and comments, such ridiculous names aren't really necesary - like, how many "account" type values do you have floating around in the current scope/context???
Re: If TypeScript is so great, how come all notable ReactJS projects use Babel?
#175If you're interested in this combination, I've published a step-by-step guide showing how all pieces fit together in:
https://github.com/ServiceStackApps/typescript-redux
For a decent sized TypeScript + React code-base checkout https://github.com/ServiceStack/Gistlyn - a C# Gist IDE written in TypeScript + React and Redux - a large enough project that would've been painful to write without React or TypeScript. A Live demo is available at: http://gistlyn.com
Re: If TypeScript is so great, how come all notable ReactJS projects use Babel?
#176Earlier quoted context omitted.
Immutable.js ( https://facebook.github.io/immutable-js/ ) doesn't have the greatest typescript type annotations. Due to limitations of TypeScript, there is no way to write types for immutable.js heterogenous maps (homogenous Maps and Vectors are fine though). Since immutable.js collections are recommended to be used with redux, and no one wants to bother using IMJS records instead of just maps, the types end up being…
I feel like TypeScript needs some work in areas around typing methods - for example, I ran into type issues when trying to go more functional via ramda.js ( http://ramdajs.com/ ) using stuff like compose, and ultimately it felt like a limitation of TypeScript.
Re: If TypeScript is so great, how come all notable ReactJS projects use Babel?
#177Earlier quoted context omitted.
Immutable.js ( https://facebook.github.io/immutable-js/ ) doesn't have the greatest typescript type annotations. Due to limitations of TypeScript, there is no way to write types for immutable.js heterogenous maps (homogenous Maps and Vectors are fine though). Since immutable.js collections are recommended to be used with redux, and no one wants to bother using IMJS records instead of just maps, the types end up being…
Functional programming is quite old and I wouldn't call it a trend. I'd say it's more like an industry getting better at its craft, similar to the transition toward strong typing.
Re: If TypeScript is so great, how come all notable ReactJS projects use Babel?
#178Earlier quoted context omitted.
As far as I've seen, it's really only Object spread (likely ES2017 feature) that's commonly used that is not yet supported by TypeScript. Microsoft has promised support for it in TS 2.1, and generally stays on top of ECMAScript proposals that have gained enough traction that they seem likely to ship.
On the other hand, Flow is removed from the code transformation, so it doesn't have to bother with keeping up with the spec. That's a pretty strong point in Flow's favor in my opinion, single responsibility principle and all that :)
esproposal.class_instance_fields=enable
but it chokes on ones it doesn't understand. I tried using Flow and RxJS in the same codebase. RxJS makes heavy use of the pipeline operator:
stream::map(thing) vs map.call(stream, thing)
Flow will stop checking types as soon as it sees ::. Babel parses it, but Flow runs in parallel, so it needs to be able to walk the AST itself.
Re: If TypeScript is so great, how come all notable ReactJS projects use Babel?
#179I do TypeScript every day for work, and honestly I don't see the point of it. I'm also of the opinion that the iterator pattern nonsense has ruined generated code quality for ES6 transpilers, and that ES5 getters and setters have made it considerably harder for JS engines to do high level optimizations (dead store elimination, invariant hoisting, load merging, etc.). The sky is falling. Anyway, you're not going to di…
> I do TypeScript every day for work, and honestly I don't see the point of it. really? I'm assuming you never refactor anything.
(much like IDE generated getter/setter code, which is solving the wrong problem)