JS: NEXT LEVEL

There're a lot of tools that extend JS possibilities, like libs that modify standard objects, etc. But some people wanted to do something so different, they created their own language, that compiles (or better said transpiles) into javascript.

Why Would They Do This?

There're Several Reasons

  1. To introduce some syntactic sugar, like CoffeeScript
  2. To introduce strong typing , like Typescript or Dart
  3. To write javascript in your favourite language: ClojureScript, Scala.js, Opal, Pyjamas, Perlito, Go2js, GHCJS and ton of others
  4. Other semantics: Elm, …
  5. Snobbery

List of languages, that compile to JS

CoffeeScript in previous year slides

ClojureScript in previous year slides

Cljs for js devs

TypeScript

Awesome TypeScript

TypeScript Revealed

TypeScript Deep Dive

Future JS Now

  • Classes
  • Arrow Functions
  • Rest Parameters
  • let
  • const
  • Destructuring
  • for...of
  • Iterators
  • Template Strings
  • Spread Operator
  • Enums
  • Promise
  • Generators
  • Async Await
  • Decorators

Future? JS Now

  • Classes | Arrow Functions | Rest Parameters | let | const | Destructuring | for...of | Iterators | Template Strings
  • Spread Operator (+ Stage 2 Rest/Spread properties)
  • Enums

  • Promise | Generators
  • Async Await (Stage 3)
  • Decorators (Stage 1)

Static type language fanboys' cherry

  • Namespaces / Modules
  • Classes
  • Generics
  • Interfaces
  • Decorators

Design time parts

  • Type/signature check
  • Private/public/protected

Run Time Parts

  • Transpilation

Helping w/ type information – type definitions

Code Time