5 ms·
ES6 has eliminated most (though not all) of the pain Coffeescript solved. I work on a large code base that went from Coffeescript -> Typescript (mostly manual,
by yojo 9y ago
ES6 has eliminated most (though not all) of the pain Coffeescript solved. I work on a large code base that went from Coffeescript -> Typescript (mostly manual, some decadfeinate), and typesafety has been a huge boon for our developers. For smaller teams/codebases, you might be happy sticking with Coffeescript.
- jononor 9y agoSo want typing support in CoffeeScript...
- koolba 9y agoThat'd be particularly difficult as CoffeeScript doesn't have var declarations.
- molszanski 9y agoPartly. You can define them if you want it. You can even add type support with FB Flow. CS developers sometimes define variables because of hoisting. Obviously, variables are defined. In CS they are simply defined for you automatically. That said, you can obviously do it yourself if you want. But you will not be able to use additional tooling around `let` and `const`
- jononor 9y agoCan one use FB flow with CoffeeScript? Comments I saw on github indicated that the CS compiler mangled it, I think due to how functions are named and stripping comments?
- molszanski 9y agoI personally don't really like types, but I've successfully used FB Flow with CS and it was fine.
- jononor 9y agoGot any docs/writeup for this? Any tips/tricks/hacks?
- rattray 9y agoThat was a big part of my motivation in building http://LightScript.org http://LightScript.org as it was clear that was never going to happen with coffee. Currently works with Flow syntax, but not yet the actual flow checker - would love help making that happen!
- xiaoma 9y agoI see ES6 or especially Typescript as essentially a recreation of ES4/Flash AS3, with some renaissance-era Javascript footguns attached. You've got classes, various class based OO features, optional typing major industry support, probably improved performance coming soon, etc... Coffeescript was a bit different. It meant fewer lines of code, not more. It had significant whitespace and some other Python-inspired idioms like array comprehensions and object comprehensions. Most importantly, Coffeescript was a new language and didn't have to re-implement deleterious Javascript features like the == vs === distinction, undeclared vars leaking to global scope, baroque keywords like "with", etc... That said as others have pointed out, ES6 did borrow many good features from CS and CS is slowly dying. Fortunately other languages like Elm and, to a lesser degree, Reason have offered even more compelling "footgun free" alternatives.
- masklinn 9y ago> It had significant whitespace and some other Python-inspired idioms like array comprehensions and object comprehensions. Modern JS has standard HoFs (on arrays) and an iteration protocol. > undeclared vars leaking to global scope Strict mode (which syntactic ES6 features enable by default e.g. class contents are in strict mode always). > baroque keywords like "with" Which can trivially be linted away. > ES6 did borrow many good features from CS Not really from CS, rather from similar (much older) sources CS got them from.
- xiaoma 9y agoHoFs are not array comprehensions and array comprehensions aren't supported in ES6. https://gist.github.com/sleepyfox/1879845 https://gist.github.com/sleepyfox/1879845 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Array_comprehensions https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
- masklinn 9y ago> HoFs are not array comprehensions and array comprehensions aren't supported in ES6. Neither of these is a claim I made so I'm not sure why you feel the need to point these out. However native HoF obviate much of the need for comprehensions, especially combined with terser "arrow functions". Languages like Smalltalk or Ruby do just fine without comprehensions for instance.