Menü
Developer

JavaScript-Konkurrrent: Dart 1.21 bekommt generische Methoden

Nachdem bisher lediglich Listen und ähnliche Klassen Generics verwenden durften, funktionieren sie nun zumindest syntaktisch auch bei Methoden als Parameter und Rückgabewert.

vorlesen Drucken Kommentare lesen 1 Beitrag
Dart 1.21 bekommt generische Methoden

Die JavaScript-Alternative Dart erweitert in Version 1.21 vor allem die Einsatzmöglichkeiten für Generics. Bisher ließen sich uneingeschränkt nur in Listen und ähnliche Klassen als List<T> definieren. Generische Methoden waren dagegen nur im Strong Mode erlaubt, um den Ansatz des restriktiven Typensystems zu stärken. Der generelle Einsatz ermöglicht auch den Einsatz in Bibliotheken. Entwickler können die Generics optional auf einen bestimmten Bereich einschränken, wie folgendes Beispiel aus der Erklärung auf GitHub zeigt:

/// Takes a list of two numbers of some num-derived type [T].
T sumPair<T extends num>(List<T> items) {
return items[0] + items[1];
}

Hier ist für T ein numerischer Typ erlaubt, der von der abstrakten num-Klasse abgeleitet ist. Während die Syntax von Dart 1.21 die Generics unterstützt, funktionieren sie uneingeschränkt nur im Zusammenspiel mit dem Dart Dev Compiler (DDC).

Darüber hinaus bringt Dart 1.21 kleine syntaktische Änderungen, die den Code übersichtlicher machen sollen. So ist jetzt beispielsweise die Schreibweise

  enableFlags({bool hidden = false}) {...}

gleichbedeutend mit

  enableFlags({bool hidden: false}) {...}

Google stellte Dart erstmals 2011 als Alternative zu JavaScirpt vor und gestaltet es weitgehend mit. Der Suchmaschinenanbieter setzt es selbst ein und hat beispielsweise das Frontend für AdWords Anfang 2016 in Dart umgesetzt. Als Vorzüge gegenüber JavaScript preisen die Macher die bessere Lesbarkeit. Außerdem ermöglicht der Strong Mode eine restriktive Typenprüfung, um unerwartetes Verhalten zu vermeiden.

Details zu den Einschränkungen bei generischen Methoden stehen im Dart-Blog. Die vollständige Liste der Neuerungen in Dart 1.21 ist im Changelog zu finden. Das aktuelle SDK steht auf GitHub. Vorkonfigurierte Pakete für Windows, Linux und Mac gibt es auf der Download-Seite. (rme)