TypeScript
Warum und wann TypScript verwenden?
Suche…
Einführung
Wenn Sie die Argumente für Typsysteme im Allgemeinen überzeugend finden, sind Sie mit TypeScript zufrieden.
Dies bringt viele der Vorteile eines Typsystems (Sicherheit, Lesbarkeit, verbesserte Werkzeuge) für das JavaScript-Ökosystem. Es hat auch einige Nachteile der Typsysteme (zusätzliche Komplexität und Unvollständigkeit).
Bemerkungen
Die Vorteile von typisierten und nicht typisierten Sprachen werden seit Jahrzehnten diskutiert. Argumente für statische Typen sind:
- Sicherheit: Mit Typsystemen können viele Fehler frühzeitig erkannt werden, ohne dass der Code ausgeführt wird. TypeScript kann so konfiguriert werden, dass weniger Programmierfehler auftreten
- Lesbarkeit: Explizite Typen machen den Code für den Menschen verständlicher. Wie Fred Brooks schrieb : "Zeigen Sie mir Ihre Flussdiagramme und verbergen Sie Ihre Tische, und ich werde weiterhin verwirrt. Zeigen Sie mir Ihre Tabellen, und ich werde normalerweise keine Flussdiagramme benötigen;
- Tooling: Typsysteme machen Computer für Computer verständlicher. Dadurch können Werkzeuge wie IDEs und Linters leistungsfähiger sein.
- Leistung: Durch Typsysteme wird der Code schneller ausgeführt, da die Laufzeitprüfung nicht mehr erforderlich ist.
Da die Ausgabe von TypeScript unabhängig von ihrem Typ ist , hat TypeScript keinen Einfluss auf die Leistung. Das Argument für die Verwendung von TypeScript beruht auf den anderen drei Vorteilen.
Argumente gegen Typsysteme sind:
- Komplexität hinzugefügt: Typsysteme können komplexer sein als die von ihnen beschriebene Sprachlaufzeit. Funktionen höherer Ordnung können leicht korrekt implementiert werden, sind aber schwer zu tippen . Durch den Umgang mit Typdefinitionen werden zusätzliche Hindernisse für die Verwendung externer Bibliotheken geschaffen.
- Verbosity hinzugefügt: Typanmerkungen können Boilerplate zu Ihrem Code hinzufügen, wodurch die zugrunde liegende Logik schwerer zu befolgen ist.
- Langsamere Iteration: Durch die Einführung eines Build-Schritts verlangsamt TypeScript den Bearbeitungs- / Speicherungs- / Neuladezyklus.
- Unvollständigkeit: Ein Typsystem kann nicht gleichzeitig solide und vollständig sein. Es gibt korrekte Programme, die TypeScript nicht zulässt. Und Programme, die TypeScript akzeptiert, können immer noch Fehler enthalten. Ein Typsystem macht das Testen nicht überflüssig. Wenn Sie TypeScript verwenden, müssen Sie möglicherweise länger warten, um die neuen ECMAScript-Sprachfunktionen zu verwenden.
TypeScript bietet einige Möglichkeiten, um alle diese Probleme zu beheben:
- Komplexität hinzugefügt Wenn die Eingabe Teil eines Programms ist zu schwierig, Typoskript weitgehend kann unter Verwendung eines undurchsichtigen deaktiviert
any
Art. Gleiches gilt für externe Module. - Verbosität hinzugefügt. Dies kann teilweise durch Typ-Aliase und die Fähigkeit von TypeScript zum Ableiten von Typen behoben werden. Das Schreiben von klarem Code ist eine Kunst wie eine Wissenschaft: Entfernen Sie zu viele Typanmerkungen, und der Code ist möglicherweise für menschliche Leser nicht mehr klar.
- Langsamere Iteration: Ein Build-Schritt ist in der modernen JS-Entwicklung relativ häufig und TypeScript ist bereits in die meisten Build-Tools integriert . Wenn TypeScript frühzeitig einen Fehler abfängt, können Sie einen gesamten Iterationszyklus einsparen!
- Unvollständigkeit. Obwohl dieses Problem nicht vollständig gelöst werden kann, konnte TypeScript im Laufe der Zeit immer mehr ausdrucksstarke JavaScript-Muster erfassen. Zu den jüngsten Beispielen gehören das Hinzufügen von zugeordneten Typen in TypeScript 2.1 und Mixins in 2.2 .
Die Argumente für und gegen Typsysteme gelten im Allgemeinen auch für TypeScript. Die Verwendung von TypeScript erhöht den Aufwand für das Starten eines neuen Projekts. Aber im Laufe der Zeit, wenn das Projekt an Größe gewinnt und mehr Mitwirkende gewinnt, besteht die Hoffnung, dass die Profis (Sicherheit, Lesbarkeit, Werkzeug) des Einsatzes stärker werden und die Nachteile überwiegen. Dies spiegelt sich im Motto von TypeScript wider: "JavaScript skaliert."
Sicherheit
TypeScript fängt Typfehler früh durch statische Analyse ab:
function double(x: number): number {
return 2 * x;
}
double('2');
// ~~~ Argument of type '"2"' is not assignable to parameter of type 'number'.
Lesbarkeit
Mit TypeScript können Editoren kontextbezogene Dokumentationen bereitstellen:
Sie werden nie vergessen, ob String.prototype.slice
(start, stop)
oder (start, length)
erneut dauert!
Werkzeugbau
Mit TypeScript können Editoren automatisierte Refaktoren ausführen, die die Regeln der Sprachen kennen.
Hier zum Beispiel, Visual Studio - Code ist in der Lage Verweise auf die innere umbenennen foo
ohne die äußere Veränderung foo
. Dies wäre mit einem einfachen Suchen / Ersetzen schwierig.