Dieser Crashkurs eignet sich für in der objektorientierten Programmierung (z.B. mit Java, C#, C++) sehr erfahrene Entwickler, die in kurzer Zeit die wichtigsten Syntaxkonstrukte von der Skriptsprachen JavaScript und TypeScript erlernen wollen. Für eine ausführliche Erörterung empfehlen wir hingegen folgende Schulungsmodule:
1. JavaScript-Basiswissen
2. JavaScript-Aufbauwissen
3. TypeScript
# Die Skriptsprache JavaScript
Grundkonzepte von JavaScriptUnterschiede zu C#/C++/Visual Basic/Java u.a.Variablen und Datentypen in JavaScript sowie Ermittlung von TypenKontrollstrukturen (Schleifen, Bedingungen etc.)Booleans, truthy und falsy und der VergleichsoperatorFunktionen, funktionale Programmierung und ClosuresVerwatung von Objekten und Objektmengen (z.B. Array, ArrayBuffer, Set, Map, WeakMap, WeakSet, WeakRef, Proxy)Objektorientierte Programmierung mit Objektliteralen, Konstruktorfunktionen und PrototypenDas Function-Objekt und thisHilfsfunktionen und eingebaute Objekte (z.B. JSON, Math, asychrone Programmierung: Promise, async, awaitModule-Muster und IIFEsSonderfälle und besondere Konstrukte# TypeScript als Erweiterung zu JavaScript
Transpilation nach JavaScript Konfiguration des TypeScript-Compilers (tsconfig.json)Verbesserte Typisierung / TypeScript-Datentypenvar vs. let vs. constTemplate Stringsfor-of vs. for-inKlassenbasiertes Programmieren: Klassen, Vererbung und InterfacesDuck TypingDestructuringVereinfachtes funktionales Programmieren: Funktionen und Lambdas (Arrow-Functions)Vereinfachte asynchrone Programmierung mit async/awaitGenericsFehlerbehandlungModuleAmbiente DeklarationenDekoratoren (Annotationen)Iteratoren und Generatoren# Best Practices für JavaScript und TypeScript
Zu vermeidende SprachkonstrukteWartbaren Code schreibenCoding Styles# Werkzeuge
Web-Editoren wie Visual Studio, Visual Studio Code (VSCode), Webstorm/IntelliJ und EclipseSinnvolle Erweiterungen des Webeditors (z.B. Plug-Ins für VSCode, Web Essentials für Visual Studio)Aufbau eines Projekts/ProjektstrukturAusführungsumgebungen: node.js und BrowserTranspilation, z.B. von TypeScript zu JavaScriptPräprozessoren, z.B. SASS/SCSS/LESS/Stylus für CSSDebugger z.B. in Visual Studio, VSCode, Webstorm, EclipseDebugger in Browsern z.B. in ChromeDie Paketmanager NPM, bower und nugetBundling, Lazy Loading und Hot Reloading mit Webpack, RequireJS oder SystemJSCodegenerierung mit YeomanQualitätssicherung mit Lintern wie ESLint, JSLint, JSHint, TSLintBuild-Automatisierung mit NPM-Skripten, gulp und gruntBundling mit Webpack, Parcel oder BrowsifyTestautomatisierung, z.B. Jest, Mocha, Qunit, Cypress, Selenium, Nightwatch, WebdriverIO, Protractor, TestCafe, Playwright, Puppeteer, Chai, Expect.js, Code Coverage mit "Istanbul" Continuous Integration / Continuous Delivery, z.B. mit GitHub, GitLab, Azure DevOpsOptional: Framework-spezifische CLI-Werkzeuge wie z.B. Angular CLI, Vue CLI, React CLI oder Cordova CLI