Menü
Developer

Flow: Statische Typüberprüfung für JavaScript von Facebook

Das soziale Netz stellt ein Werkzeug zur statischen Typüberprüfung für JavaScript vor, das für eine bessere Produktivität und Qualität des Codes sorgen soll.

vorlesen Drucken Kommentare lesen 86 Beiträge

Facebook hat unter dem Namen Flow ein neues Werkzeug zur statischen Typüberprüfung vorgestellt. Das Tool ist sinnvoll, da JavaScript – anders als etwa die Programmiersprachen Java, C oder C++ – standardmäßig keine statische Typisierung unterstützt. Das quelloffene und größtenteils in OCaml geschriebene Projekt befindet sich noch in einem frühen Stadium, soll aber über kurz oder lang für eine bessere Produktivität und Qualität des JavaScript-Codes sorgen. Auch werden schon zahlreiche Eigenschaften des kommenden ECMAScript-6-Standards unterstützt.

Für die statische Typisierung sprechen eine frühe Fehlerprüfung, mit der sich bestimmte Laufzeitfehler vermeiden lassen, und Einblicke in den Code, aufgrund derer sich der Code besser navigieren, transformieren und verbessern lassen soll. Die Kombination aus JavasScript und statischen Typen gestaltet sich jedoch für gewöhnlich nicht einfach, deswegen verwendet Flow Datenfluss- und Kontrollflussanalysen, die auch die meisten Compiler verwenden, um semantische Informationen zur Typableitung aus dem Code zu ziehen. Der Entwicklung von Flow liegt die Annahme zugrunde, dass der meiste JavaScript-Code implizit statisch typisiert sei.

Die Typüberprüfung von Flow geschieht als Opt-in – Entwickler müssen nicht ihren gesamten Code auf einmal überprüfen, sondern können die zu untersuchenden Codepassagen selbst auswählen. Flow findet die statischen Typen automatisch, es sind für das Finden von Typfehlern also keine Änderungen am Code notwendig. Für das Opt-in spricht des Weiteren, dass mancher JavaScript-Code inhärent dynamisch verwendet wird, insbesondere bei Frameworks. Dafür würde die Typprüfung von Flow zu ungenau sein, deswegen bietet das Werkzeug die Option, solchem Code explizit zu vertrauen und bei der Prüfung außen vor zu lassen.

Diese Entscheidung bekommt durch die große JavaScript-Codemenge bei Facebook Rückendeckung, denn der meiste Code falle hier in die Kategorie des implizit statisch typisierten Codes, weswegen Entwickler ihren Code überprüfen können, ohne dass sie ihn explizit mit Typen annotieren müssten. Laut Facebook unterscheide man sich hierin auch von anderen Versuchen, die ein Typsystem für die Sprache bieten, wie Microsofts JavaScript-Aufsatz TypeScript. (ane)