2. Über den Vortragenden
Jens Siebert
Diplom-Informatiker
Software-Architekt bei dSPACE (seit 2 Jahren)
Vorher: SmartCards und Medizintechnik
Bild: privat (Jens Siebert, 2016)
3. Bevor wir uns TypeScript widmen…
Bild: Wikipedia (https://en.wikipedia.org/wiki/File:TeamTimeCar.com-BTTF_DeLorean_Time_Machine-OtoGodfrey.com-JMortonPhoto.com-07.jpg)
4. JavaScript – Ein Blick in die Geschichte
Entwickelt bei Netscape durch Brendan Eich
Entwicklungsdauer bis zur ersten Version: 10 Tage
Beeinflusst durch Scheme, Perl, Self, Java, C, Python, etc.
JavaScript 1.0 im März 1996
Standardisierung durch ECMA in 1997 (ECMAScript)
Aktueller Standard: ECMAScript 2016 (ES2016)
Typische Anwendungsgebiete (initial):
DOM-Manipulation
Form-Validierung
Bild: Wikipedia (https://en.wikipedia.org/wiki/File:Brendan_Eich_Mozilla_Foundation_official_photo.jpg)
5. JavaScript - Features
Interpretiert
Funktional
Dynamisch
Nicht typisiert
var i = 5;
i = „Hallo Welt“;
Objektorientiert (Prototyp-basierte Objektorientierung)
var hund = Object.create(tier);
hund.bellen = function() {
console.log("Wuff");
}
delete hund.bellen;
hund.bellen(); // Kabumm
Keine nativen Mechanismen zur Strukturierung großer Software-Systeme
7. Fehlerkosten in der Software-
Entwicklung
Bild: Wikipedia (http://developer.okta.com/assets/img/2015-05-08-software-engineering-design-principles-agile-cost-curve.png)
8. Große Software-Systeme sind ohne Automatisierung schwer zu verwalten
Aussagen über implementierte und genutzte Schnittstellen sind praktisch
kaum zu treffen
Statische Codeanalyse
Typinformationen
Fehlerkosten in der Software-
Entwicklung
Bild: Wikipedia (http://developer.okta.com/assets/img/2015-05-08-software-engineering-design-principles-agile-cost-curve.png)
9. Auftritt TypeScript
Entwickelt bei Microsoft durch Anders Hejlsberg
Beeinflusst durch JavaScript, Java, C#
TypeScript 0.8 im Oktober 2012
Aktuelle Version: TypeScript 1.8 (2.0 Beta)
Bild: Wikipedia (https://en.wikipedia.org/wiki/File:Anders_Hejlsberg.jpg)
10. TypeScript – Was ist das eigentlich?
Superset von JavaScript/ECMAScript
Features:
Kompatibilität zu ECMAScript (ES3, ES5, ES2015, ES2016)
Strenge Typisierung (optional)
Mechanismen zur Strukturierung großer Software-Systeme
u.a. Klassen, Interfaces, Generics, Module, …
Übersetzung in „lesbaren“ JavaScript-Code
Minimale zusätzliche Laufzeit-Kosten
Enge Anlehnung an aktuelle und zukünftige ECMAScript-Standards
Services zur vereinfachten Integration in Entwicklungswerkzeuge
Native Unterstützung von React (JSX-Syntax)
Cross Platform und Open Source
11. TypeScript – Die Architektur
Bild: Wikipedia (https://raw.githubusercontent.com/wiki/Microsoft/TypeScript/images/architecture.png)
12. TypeScript Beispiele - Klassen
class Greeter {
greet() : string {
return "Hello World!";
}
}
var Greeter = (function () {
function Greeter() {
}
Greeter.prototype.greet =
function () {
return "Hello World!";
};
return Greeter;
}());
19. Ausblick auf TypeScript 2.0
Non-nullable types
Readonly properties
private and protected constructors
abstract properties
async/await support for ES5/ES3
Interface definition file (.d.ts) installation via npm
und noch vieles mehr…
20. Alternative zu TypeScript - Flow
/* @flow */
function add(num1: number, num2: number): number {
return num1 + num2;
}
var x: number = add(3, '0');
> flow check
file.js:5
5: var x: number = add(3, '0');
^^^^^^^^^^^ function call
5: var x: number = add(3, '0');
^^^ string. This type is incompatible with
2: function add(num1: number, num2: number): number {
^^^^^^ number
Found 1 error
21. Zusammenfassung
TypeScript bietet…
… strenge Typisierung
… Mechanismen zur Strukturierung großer Software-Systeme
… Kompatibilität zu bestehenden ECMAScript-Standards
TypeScript ermöglicht…
… Prüfung der Software während der Implementierung
… vereinfachte Integration in Entwicklungswerkzeuge
… Anwendung bekannter und bewährter Prinzipien für die Entwicklung großer
Software-Systeme