© istockphoto.com/chuntise, © istockphoto.com/NREY
PHP Magazin
Typsicheres JavaScript mit TypeScript

Starke Typen

Eine häufig kritisierte Eigenschaft von JavaScript ist die Abwesenheit eines Typsystems im Sprachkern. Um dieses Problem zu lösen, gibt es zahlreiche Projekte, die der Sprache dieses Feature hinzufügen. Bemerkenswert dabei ist, dass sich auch große namhafte Unternehmen wie Microsoft, Google oder Facebook dieses Themas annehmen.

Sebastian Springer


Die Frage, die sich nun aber aufdrängt, ist: Warum sollte man typsicheres JavaScript wollen?

Typsicherheit zielt in eine ähnliche Richtung wie Tests; sie soll in erster Linie Fehler bei der Entwicklung verhindern, hat jedoch noch weitere positive Nebeneffekte auf die Entwicklung. Grundsätzlich kann mit einem Typsystem verhindert werden, dass einer Variablen die verschiedensten Werte zugewiesen werden. Die Ausnutzung dieser Flexibilität ist ein häufig anzutreffendes Anti-Pattern in JavaScript-Applikationen. Das Problem wird deutlicher, wenn man sich vorstellt, dass man einer Variablen zunächst einen Booleschen Wert wie false zuweisen und sie danach mit einem Array, einem Objekt oder gar einer Funktion verwenden kann. Wird der Wert der Variablen dann als Rückgabewert innerhalb einer Funktion genutzt, muss man entweder raten, welche Art von Wert man erhält, oder den Quellcode der Funktion lesen.

Was für den Rückgabewert einer Funktion gilt, gilt im gleichen Maß auch für ihre Parameter. JavaScript ist sehr tolerant, wenn es um Parameter geht. Man kann sowohl zu viele als auch zu wenige Werte an eine Funktion übergeben, außerdem macht JavaScript keinerlei Annahmen bezüglich des Typs eines Werts. Basiert die Logik der Funktion auf einer bestimmten Struktur der übergebenen Werte und stimmt die erwartete Struktur nicht mit der tatsächlich übergebenen überein, kommt es zu Fehlern. Eine Möglichkeit zum Umgang mit dieser Art der Problemstellung ist die explizite Überprüfung der Struktur und das Werfen einer Exception, falls die Struktur nicht passt. Ein zentrales Feature eines Typsystems ist der Umgang mit dieser Art von Problemstellung.

Nicht zu unterschätzen ist der dokumentierende Charakter eines Typsystems. Gerade die Beschreibung der Signatur einer Funktion oder die Deklaration von Variablen hilft bei der Dokumentation einer Applikation. Interessant ist sie vor allem, wenn man Bibliotheken oder zumindest innerhalb einer Applikation wiederverwendbare Komponenten erstellt.

Damit man ein solches System aber auch wirklich optimal einsetzen kann, sollte man zumindest einen groben Überblick über die Funktionsweise haben.

Wie funktionieren Typsysteme in JavaScript generell?

Nachdem JavaScript keinerlei Unterstützung für Typsicherheit mit sich bringt, müssen sich die Entwickler eines solchen Systems anderweitig behelfen. Soll der Grundsprache JavaScript neue Funktionalität hinzugefügt werden, führt der Weg in der Regel über einen Compiler, der den erweiterten Quellcode in ...

PHP Magazin
Typsicheres JavaScript mit TypeScript

Starke Typen

Eine häufig kritisierte Eigenschaft von JavaScript ist die Abwesenheit eines Typsystems im Sprachkern. Um dieses Problem zu lösen, gibt es zahlreiche Projekte, die der Sprache dieses Feature hinzufügen. Bemerkenswert dabei ist, dass sich auch große namhafte Unternehmen wie Microsoft, Google oder Facebook dieses Themas annehmen.

Sebastian Springer


Die Frage, die sich nun aber aufdrängt, ist: Warum sollte man typsicheres JavaScript wollen?

Typsicherheit zielt in eine ähnliche Richtung wie Tests; sie soll in erster Linie Fehler bei der Entwicklung verhindern, hat jedoch noch weitere positive Nebeneffekte auf die Entwicklung. Grundsätzlich kann mit einem Typsystem verhindert werden, dass einer Variablen die verschiedensten Werte zugewiesen werden. Die Ausnutzung dieser Flexibilität ist ein häufig anzutreffendes Anti-Pattern in JavaScript-Applikationen. Das Problem wird deutlicher, wenn man sich vorstellt, dass man einer Variablen zunächst einen Booleschen Wert wie false zuweisen und sie danach mit einem Array, einem Objekt oder gar einer Funktion verwenden kann. Wird der Wert der Variablen dann als Rückgabewert innerhalb einer Funktion genutzt, muss man entweder raten, welche Art von Wert man erhält, oder den Quellcode der Funktion lesen.

Was für den Rückgabewert einer Funktion gilt, gilt im gleichen Maß auch für ihre Parameter. JavaScript ist sehr tolerant, wenn es um Parameter geht. Man kann sowohl zu viele als auch zu wenige Werte an eine Funktion übergeben, außerdem macht JavaScript keinerlei Annahmen bezüglich des Typs eines Werts. Basiert die Logik der Funktion auf einer bestimmten Struktur der übergebenen Werte und stimmt die erwartete Struktur nicht mit der tatsächlich übergebenen überein, kommt es zu Fehlern. Eine Möglichkeit zum Umgang mit dieser Art der Problemstellung ist die explizite Überprüfung der Struktur und das Werfen einer Exception, falls die Struktur nicht passt. Ein zentrales Feature eines Typsystems ist der Umgang mit dieser Art von Problemstellung.

Nicht zu unterschätzen ist der dokumentierende Charakter eines Typsystems. Gerade die Beschreibung der Signatur einer Funktion oder die Deklaration von Variablen hilft bei der Dokumentation einer Applikation. Interessant ist sie vor allem, wenn man Bibliotheken oder zumindest innerhalb einer Applikation wiederverwendbare Komponenten erstellt.

Damit man ein solches System aber auch wirklich optimal einsetzen kann, sollte man zumindest einen groben Überblick über die Funktionsweise haben.

Wie funktionieren Typsysteme in JavaScript generell?

Nachdem JavaScript keinerlei Unterstützung für Typsicherheit mit sich bringt, müssen sich die Entwickler eines solchen Systems anderweitig behelfen. Soll der Grundsprache JavaScript neue Funktionalität hinzugefügt werden, führt der Weg in der Regel über einen Compiler, der den erweiterten Quellcode in ...

Neugierig geworden?


    
Loading...

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