© saicle/Shutterstock.com
PHP Magazin
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.

Jakob Westhoff


Das ProblemDie KonkurrenzMit 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über hinaus ergänzt die Sprache Features wie Klassen und Interfaces, um das Typsystem zu vervollständigen. Auch wenn die Sprache eine strikte Obermenge von JavaScript ist und somit jeglicher JavaScript-Code auch korrekter TypeScript-Code ist, tritt der größte Nachteil auch hier beim Einsatz externer Bibliotheken zu Tage. Um den korrekten Einsatz dieser zu überprüfen, benötigt der Compiler Informationen über die Typen und Interfaces der eingesetzten Bibliothek. Sie müssen mittels komplexer Definitionen für jede externe Library bereitgestellt werden.Ein neuer Kandidat im RennenFlow verwendet einen kombinierten Ansatz einer erweiterten Sprachsyntax sowie heuristischer Modelle zum Auffinden von Typisierungsfehlern in JavaScript-Code. Im Gegensatz zu den meisten Tools seiner Gattung ist Flow selbst nicht in JavaScript geschrieben, sondern in OCaml [4] – einer Sprache, die durch ihr funktionales Paradigma bestens zur Entwicklung von Compilern geeignet ist. Der Fakt der Entwicklungssprache findet hier Erwähnung, weil dieser einen von den meisten JavaScript-Tools abweichenden Installationsprozess bedingt. Anstelle eines Paketmanagers wie npm einzusetzen, existieren für Flow vorbereitete Binärpakete, die auf der Seite des Projekts [1] heruntergeladen werden können. Aktuell existieren sie für Linux und Mac OS X.Heruntergeladen und im Ausführungspfad platziert steht die flow Binary bereit. Jedes Projekt, das mit diesem Tool überprüft werden soll, benötigt darüber hinaus eine .flowconfig-Datei. Mittels eines Aufrufs von flow init innerhalb des Projektverzeichnisses kann diese automatisch erstellt werden. Anschließend ist Flow bereit, seinen Dienst zu leisten. Doch was genau macht Flow?function twice(a) { return a * 2;} twice(2); // 4twice("Hi there!"); // NaNUm derartige Probleme frühzeitig zu erkennen, kommt nun Flow ins Spiel. Zunächst muss die Datei zur Überprüfung mittels Flow markiert werden. Im ersten Kommentar innerhalb der Datei muss hierzu die Zeichenkette @flow auftauchen:/** @flow **/ function twice(a) {/*...*/}Nach der Annotation der Datei kann nun mittels flow check eine Überprüfung durchgefüh...

PHP Magazin
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.

Jakob Westhoff


Das ProblemDie KonkurrenzMit 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über hinaus ergänzt die Sprache Features wie Klassen und Interfaces, um das Typsystem zu vervollständigen. Auch wenn die Sprache eine strikte Obermenge von JavaScript ist und somit jeglicher JavaScript-Code auch korrekter TypeScript-Code ist, tritt der größte Nachteil auch hier beim Einsatz externer Bibliotheken zu Tage. Um den korrekten Einsatz dieser zu überprüfen, benötigt der Compiler Informationen über die Typen und Interfaces der eingesetzten Bibliothek. Sie müssen mittels komplexer Definitionen für jede externe Library bereitgestellt werden.Ein neuer Kandidat im RennenFlow verwendet einen kombinierten Ansatz einer erweiterten Sprachsyntax sowie heuristischer Modelle zum Auffinden von Typisierungsfehlern in JavaScript-Code. Im Gegensatz zu den meisten Tools seiner Gattung ist Flow selbst nicht in JavaScript geschrieben, sondern in OCaml [4] – einer Sprache, die durch ihr funktionales Paradigma bestens zur Entwicklung von Compilern geeignet ist. Der Fakt der Entwicklungssprache findet hier Erwähnung, weil dieser einen von den meisten JavaScript-Tools abweichenden Installationsprozess bedingt. Anstelle eines Paketmanagers wie npm einzusetzen, existieren für Flow vorbereitete Binärpakete, die auf der Seite des Projekts [1] heruntergeladen werden können. Aktuell existieren sie für Linux und Mac OS X.Heruntergeladen und im Ausführungspfad platziert steht die flow Binary bereit. Jedes Projekt, das mit diesem Tool überprüft werden soll, benötigt darüber hinaus eine .flowconfig-Datei. Mittels eines Aufrufs von flow init innerhalb des Projektverzeichnisses kann diese automatisch erstellt werden. Anschließend ist Flow bereit, seinen Dienst zu leisten. Doch was genau macht Flow?function twice(a) { return a * 2;} twice(2); // 4twice("Hi there!"); // NaNUm derartige Probleme frühzeitig zu erkennen, kommt nun Flow ins Spiel. Zunächst muss die Datei zur Überprüfung mittels Flow markiert werden. Im ersten Kommentar innerhalb der Datei muss hierzu die Zeichenkette @flow auftauchen:/** @flow **/ function twice(a) {/*...*/}Nach der Annotation der Datei kann nun mittels flow check eine Überprüfung durchgefüh...

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