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
Einsatzgebiete von JavaScript (Browser, Server, Cloud, Konsole, Anwendungserweiterungen) Entwicklungsumgebungen für JavaScriptGrundkonzepte: Sprachmerkmale und Paradigmen in JavaScriptUnterschiede zu C#/C++/Visual Basic/Java u.a.Datentypen, Literale, Variablen, Konstanten, Gültigkeitsbereichevar vs. let vs. constTemplate StringsErmittlung von Typen und TypkonvertierungKontrollstrukturen (Schleifen, Bedingungen etc.)Truthy und FalsyBooleans, truthy und falsy und der VergleichsoperatorFunktionen, Parameter, RückgabewerteLambdas (Arrow-Functions)Funktionale Programmierung und Closures, Immediately Invoked Function Expression (IIFE)Verwatung von Objekten und Objektmengen (Array, ArrayBuffer, Set, Map, WeakMap, WeakSet, Int8Array, Float64Array u.a.) Iteration und Manipulation von Mengen, Spread-Operator Fehlerbehandlung mit Try-Catch und ThrowObjektorientierte Programmierung mit Objektliteralen, Konstruktorfunktionen und PrototypenKlassen, Konstruktoren, Properties und VererbungWeakRef, ProxyDas Function-Objekt und thisHilfsfunktionen und eingebaute Objekte (z.B. JSON, Math)Asychrone Programmierung: async, await, Callback-Funktionen, PromisesIteratoren und GeneratorenDestructuringModuleSonderfälle und besondere KonstrukteJavaScript-Patterns und Best Practices Codequalität und Lesbarkeit# TypeScript als Erweiterung zu JavaScript
Unterschiede zwischen TypeScript und JavaScript Gründe für die Verwendung von TypeScriptTranspilation nach JavaScript Einrichtung der TypeScript-EntwicklungsumgebungKonfiguration des TypeScript-Compilers (tsconfig.json)DatenTypen in TypeScript, Statische Typisierung vs. dynamische Typisierung, Typaliase Typisierte Funktionen und ParameterErweitertes Klassenbasiertes Programmieren: Klassen, Vererbung und InterfacesDuck TypingGenericsAmbiente DeklarationenDekoratoren (Annotationen)# 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/Projektstruktur mit Projekt-Scaffoldung-Werkzeugen, z.B. Yeoman oder Framework-spezifische CLIAusfü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 ChromePaketmanager, z.B. NPM, Yarn bower und nugetBundling, Lazy Loading und Hot Reloading mit Vite, Webpack, RequireJS oder SystemJSStatische-Codeananalyse mit Lintern, z.B. ESLint, JSLint, JSHint, TSLintBuild-Automatisierung mit NPM-Skripten, gulp und gruntBundling mit Vite, 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