Global Vars Exceptions FP Understanding Code Testing Cross-browser Immutability Mutability JSON Distribution Learning Perf Editor tooling Hiring Mentorship / Help Upgrade Packages Side-effects Type coercion Late binding “This” Long build time
line even. Slowly enable safety features • Awesome auto-completion! (VSCode) • Very powerful type system, you can type any JS lib basically. • Lots of libraries and types for JS libs
file is. • Nothing forces you to type your code • Types for JS libraries can easily go out of date. • Tempting to gradually un-type a file. • Setup is a lot of work. Lots of config options. • Decent amount of added verbosity • Most of the bad parts of JS still exist.
Exceptions FP Understanding Code Testing Immutability Mutability JSON Distribution Learning Perf Editor tooling Hiring Mentorship / Help Upgrade Packages Side-effects Type coercion Late binding “This” Prototypal inheritance Long build time Type coverage
all the way • Implicit Static Typing (Hindley–Milner) ◦ No NULL ◦ Way to express uncertainty in the types (ADTs) ◦ Almost no runtime exceptions • Pattern Matching
Pure Functions λ (easier to understand and test) • Framework built in • Semver enforced. ⛑ • Great Editor Tooling (Atom especially) • Time Traveling debugger 100% of the time ⏳
apps easily) • Still need JS to do many things & JS interop is a bit verbose (will change over time) • Syntax will be new for most • SLOW compiler (fixed in next version)
Exceptions FP Understanding Code Testing Immutability Mutability JSON Distribution Learning Perf Editor tooling Hiring Mentorship / Help Upgrade Packages Side-effects Type coercion Late binding “This” Prototypal inheritance Long build time Type coverage
Exceptions FP Understanding Code Testing Immutability Mutability JSON Learning Perf Editor tooling Hiring Mentorship / Help Upgrade Packages Side-effects Type coercion No “This” Prototypal inheritance Long build time Type coverage
if needed (speed or simplicity) • Use on backend and frontend! Share types! Native or Node • Backed and used by Facebook and the creator of React • Looks a lot like JavaScript, except everything is typed • Readable JS output
(however it’s easy to write your own) • Community is still somewhat small ◦ (but growing rapidly) • Semantics a little different that JS, so a little more work to learn • Deep language
Exceptions FP Understanding Code Testing Immutability Mutability JSON Learning Perf Editor tooling Hiring Mentorship / Help Upgrade Packages Side-effects Type coercion No “This” Prototypal inheritance Long build time Type coverage
Exceptions FP Understanding Code Testing Immutability Mutability JSON Learning Perf Editor tooling Hiring Mentorship / Help Upgrade Packages Side-effects Type coercion No “This” Prototypal inheritance Long build time Type coverage Bad JS bindings
and you aren't thinking about a ReactNative app, Elm's awesome! • I had difficulty getting people to get used to the syntax and we use React & ReactNative • Always worth learning because it can teach you to program without runtime exceptions. • Join the SLACK! They are amazing
much better tooling, amazing pragmatic safety, possibly even compile your native apps to native "IRL". • Join the discord channel! This is the main place you get help. • Most tempting for us to adopt.