TypeScript – JavaScript on Steroids (Teil 2)
Kommentare

Bei Object Types wie Klassen oder Modulen generiert der TypeScript Compiler JavaScript-Code, wie Sie ihn mit großer Wahrscheinlichkeit selbst geschrieben hätten. Die folgende Abbildung zeigt die Definition

Bei Object Types wie Klassen oder Modulen generiert der TypeScript Compiler JavaScript-Code, wie Sie ihn mit großer Wahrscheinlichkeit selbst geschrieben hätten. Die folgende Abbildung zeigt die Definition und Verwendung einer einfachen Klasse in TypeScript. Achten Sie besonders darauf, wie IntelliSense die Typinformationen nutzt. Obwohl für fullName kein Ergebnistyp angegeben wurde, erkennen sowohl IDE als auch Compiler, dass das Ergebnis ein String sein muss, da firstName und lastName Strings sind. Dieses Konzept heißt Contextual Typing.

Der Compiler erzeugt aus der oben dargestellten Klasse den folgenden JavaScript Code. Wie Sie sehen, hält er sich an die in JavaScript üblichen Konventionen für das Nachbilden von Klassen. An diesem Beispiel sieht man deutlich, dass der TypeScript Code klarer ist, und wie die Typen von der IDE genutzt werden, um den Entwickler zu unterstützen.

Interfaces kommt in TypeScript eine besondere Rolle zu. Im Gegensatz zu Programmiersprachen wie C#, bei denen explizit angegeben werden muss, dass ein Typ ein Interface implementiert, setzt TypeScript auf Structural Subtyping. Das bedeutet, dass jedes Objekt, das alle für das Interface notwendigen Members enthält, mit dem Interface kompatibel ist. Das folgende Beispiel veranschaulicht das Konzept. Achten Sie im TypeScript Code auf der linken Seite auf das Interface Person. Sowohl p1 als auch p2 sind kompatibel mit Person und können als Parameter an getFullName übergeben werden. Im generierten JavaScript Code rechts sehen Sie, dass Interfaces vom TypeScript Compiler vollständig entfernt werden. Sie werden nur von der IDE und vom Compiler für Typprüfungen zur Entwicklungs- und Übersetzungszeit verwendet.

Das oben gezeigte Structural Subtyping ist deshalb so wichtig, da man damit Typinformationen für bestehenden JavaScript Code erstellen kann, ohne diesen zu verändern. Man erstellt unabhängig von der vorhandenen JavaScript-Bibliothek eine Datei mit Ambient Declarations (Dateierweiterung .d.ts). Sie enthält ausschließlich Interfaces und declare-Anweisungen. IntelliSense und statische Typprüfung für die JavaScript-Standardbibliotheken, DOM APIs, JQuery, etc. werden dadurch möglich, ohne einen Nachteil in Sachen Performance zu haben oder den bestehenden Code ändern zu müssen.

Fazit

Überzeugte Fans der Sprache JavaScript waren bisher relativ schwer zu finden; Entwickler haben die Nachteile von JavaScript aber in Kauf genommen, um plattformunabhängig zu sein. TypeScript hat das Potential, diese Hassliebe in echte Zuneigung umzuwandeln. Höhere Entwicklerproduktivität, weniger Laufzeitfehler, bessere Gliederungsmöglichkeiten für Code durch Unterstützung von Modulen, besser lesbarer Code durch Klassen, etc. Die Liste an Verbesserungen ist lang – und das, ohne die Stärken von JavaScript zu verlieren.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -