© saicle/Shutterstock.com
Kolumne: The Good Parts

Fluss der Typen


JavaScript ist eine dynamisch typisierte Sprache. Das bedeutet, dass Variablen, Argumente und Eigenschaften keinen festen Typ, wie Zahlen oder Zeichenketten besitzen, sondern diesen automatisch bei ihrer ersten Zuweisung annehmen. Des Weiteren kann sich dieser Typ während der Laufzeit der Applikation verändern. Aus einer Variablen, welche die Zahl 42 beherbergt, kann während des Programmablaufs eine Variable werden, die die Zeichenkette „The Answer to Life the Universe and everything else“ enthält. Dieser Umgang mit Typen hat große Vor- aber auch Nachteile. Mit Flow [1] schickt Facebook nun ein neues Tool ins Rennen, das die Nachteile eliminieren soll und dennoch die Vorteile bewahrt.

Das Problem

JavaScripts Typsystem bietet große Flexibilität und erlaubt das schnelle Entwerfen von neuen Konzepten und Lösungen sowie einen schnellen und agilen Entwicklungsprozess. Ein Nachteil zeigt sich jedoch in großen Applikationen, in denen Flüchtigkeitsfehler bei der Typisierung Probleme verursachen können. Ein durch Unachtsamkeit falsch übergebener Typ an eine Funktion oder ein irrtümlicher Rückgabewert können schnell zu undefinierten Zuständen des Programms führen. Da der geschriebene Quelltext trotz dieser Fehler valider JavaScript-Code ist, fällt das Problem erst während der Ausführung der jeweiligen Routine auf. Um durch derlei Fehler verursachte, schwer zu verortende Bugs zu vermeiden, ist es in vielen Situationen letztlich wünschenswert, feste Typen zu vergeben und diese bereits vor der Ausführung des Programms zu überprüfen.

Die Konkurrenz

Ansätze zur strikteren Typisierung von JavaScript gibt es bereits seit geraumer Zeit. Einer der ersten JavaScript-Type-Checker ist Googles Closure-Compiler [2]. Dieser ist durch Zuhilfenahme von komplexen Doc-Blöcken in der Lage, Typen von Funktionen und Methoden auf ihre Richtigkeit zu überprüfen. Leider funktioniert dieses System nur bei exzessiver Nutzung der dafür vorgesehenen Syntax sowie der Kontrolle über jegliche eingesetzte Bibliothek zufriedenstellend. Dem Compiler fehlen andernfalls verständlicherweise Informationen, um Aufrufe innerhalb von externen Bibliotheken zu analysieren.

Mit TypeScript [3] hat Microsoft vor einiger Zeit ein weiteres Projekt veröffentlicht, das Typenüberprüfung in JavaScript ermöglichen soll. Im Gegensatz zu den Doc-Blöcken des Closure-Compilers wurde mit TypeScript eine neue Sprache entworfen, die Möglichkeiten bietet, Funktionen und Methoden direkt im Quelltext mit Typen zu versehen. Darü...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang