Warum ist das für mich relevant? “I’ve said a million times that I’ve said a million times that Javascript is the new Assembler – that Javascript will become the thing that everyone compiles higher level code into.“ - Nick Hodges, Oct. 2012 JavaScript?!?
Warum ist das für mich relevant? • Sprache des Internets • Läuft auf wirklich jedem Gerät • vom PC, Routern, NAS-Systemen, Tablets, Smartphones • über Wearables, Konsolen, Fernsehern, • bis hin zu Arduinos, Raspberry Pi‘s, IOT-Geräten, Heim-Automatisierung etc. • Viele Desktop- und Mobile Anwendungen sind schon heute in JS geschrieben • Atom Editor, VS Code, Slack, Spotify, GitKraken, Wordpress Desktop App, Ghost, Hyper terminal, Gitbook, Discord, Postman etc. JavaScript?!?
Ja, wo laufen sie denn? • Wo läuft denn JavaScript konkret? • Client: Browser • Server / Backend: Node.js • Electron (Node + Browser gebundelt) • In anderen Prozessen (RO Script, Edge…) • Datenbanken • CouchDB, Mongo, PouchDB JavaScript!
Eine kleine historische Reise • Gestartet als LiveScript im Netscape Navigator 2.0, Sept. 1995 • By Brendan Eich • JavaScript 1.1 in Netscape Navigator 3.0, April 1996 • „Jscript“ in Internet Explorer 3, Mai 1996 • Beginn des Browserkriegs • JavaScript 1.3, Oktober 1998, ECMA-262 1st & 2nd Edition • Auch ISO/IEC 16262 • JavaScript 1.5, November 2000, ECMA-262 3rd Edition (1999) JavaScript
Nicht ganz so einfach… • ES 5: So gut wie überall (ab IE 11+, Ausnahmen z.B. Konqueror, Rhino) • http://kangax.github.io/compat-table/es5/ • ES 6: Node 6.5, Edge, neuere FF, Chrome ab 54 • http://kangax.github.io/compat-table/es6/ • ES 2016: Node 6.5, Edge, FF52 beta, Chrome ab 56 (beta) • Aber: Features fehlen noch überall • http://kangax.github.io/compat-table/es2016plus/ Support
Nur die größten • Tippfehler führen zu Laufzeitfehlern • Keine Modularisierung (Includes / Usings) • Funktionale Programmierung „this“ zeigt in Callbacks auf Objekte, die man nicht erwartet • Prototypische Vererbung ist…. mindestens Gewöhnungsbedürftig JavaScript Probleme
Was ist das genau? • Entwickelt von Anders Hejlsberg bei Microsoft • Released 2012 • Reines JavaScript • Basis: ECMAScript 2015 • Plus optionale(!) Typisierung • Plus (vorwärtskompatible) Spracherweiterungen • Open Source Transpiler (in TS geschrieben) • Von TS auf ES3, ES2015 und neu auch ES2016 • Transpiler ist vor allem ein “Typlöscher“ TypeScript
Starten in 1… 2… 3… Voraussetzungen: • Node.js (JS Ausführungsumgebung) • Text-Editor der Wahl, z.B. VS Code oder Atom npm i typescript -g tsc Hinweis: Globale Installation von Node-Modulen sollte vermieden werden. Dies hier ist nur ein quick-start Beispiel. TypeScript