Eine Allegorie auf Types TypeScript: Formenlernspiel für Kinder

Was ist TypeScript? | Die wichtigsten Infos zur Programmiersprache TypeScript

In den letzten Jahren hat sich TypeScript als Lieblingsthema auf JavaScript-Konferenzen und Talks etabliert. Der aktuelle Developer-Survey von Stackoverflow kürt TypeScript zur drittbeliebtesten Programmiersprache unter Entwickler:innen weltweit. Noch keine zehn Jahre alt, nimmt die Sprache schon einen festen Platz in den Toolstacks ein. So tauchen TypeScript-Referenzen in den Tech-Stacks vieler bekannter Apps und Corporations auf, darunter Slack, Medium und Airbnb. Viele gute Gründe, die Sprache genauer unter die Lupe zu nehmen und zu klären, ob der Hype um TypeScript gerechtfertigt ist. (Kleiner Spoiler vorab: Wir finden, ja!)

Was ist TypeScript?

Diagramm mit TypeScript auf dem dritten Platz auf der Beliebtheitsskala der Programmiersprachen

TypeScript war 2021 die drittbeliebteste Programmiersprache von Entwickler:innen. Quelle: Stackoverflow Developer Survey 2021

Kurzzusammenfassung

Je komplexer Apps in ihrer Entwicklung werden, desto mehr führen sie auch den Entwicklern die Grenzen ihrer Sprache vor Augen. Als dynamische Programmiersprache bietet JavaScript große Flexibilität gerade im Webentwicklungsbereich. Vor 10 Jahren (und besonders vor der Umstellung auf ECMAScript 2015) ließ sie allerdings noch viele Sprachkonstrukte vermissen, die zur optimalen Strukturierung des Quellcodes beitragen – vor allem die Möglichkeit auf durchgehende statische Typisierung. TypeScript setzt genau hier an und erfüllt das Bedürfnis der Entwickler nach einer Ergänzung der Programmiersprache um nicht-native Features. Der Miterfinder Anders Hejlsberg drückt seine ursprüngliche Motivation in der Projektgruppe in einem Interview so aus:

„Let’s see if we can do a little bit better for JavaScript.“

Anders Hejlsberg

Zitiert auf zdnet.com

TypeScripts Entstehungsgeschichte: Kurzer Überblick

Die Idee für TypeScript entwickelte sich um das Jahr 2010 bei der Firma Microsoft. Grundlage und zugleich Hauptzweck der Sprache findet sich bereits in ihrem Namen: TypeScript sollte JavaScript durch die Verwendung von Types handhabbarer machen. Im internen Erfinderteam lassen sich gleich mehrere Technical Fellows ausmachen – eine der höchsten Stufen auf Microsofts Karriereleiter – ein guter Hinweis darauf, dass es Microsoft ernst gemeint hat mit dem Projekt. Ihre Hände im Spiel hatten z.B. Anders Hejlsberg, maßgeblicher DOS/Windows-Architekt und Initiator von C#, und Andreas Lucco, ebenfalls Technical Fellow und Miterfinder der JavaScript-Engine Chakra. Nach dem offiziellen Release der ersten Version im Jahr 2012 folgte bald der Launch von TypeScript als Open Source Projekt auf Github. Der Softwareriese – heute einer der größten Contributors für Open Source Projekte – war damals noch eher für seine ambivalente Haltung zum Thema bekannt und konnte mit dieser Entscheidung innerhalb der Entwicklungscommunity ein Zeichen setzen für den Wandel seiner Firmenkultur hin zu offenen Standards. Auf Github wird die Sprache TypeScript also seit 2014 von einer globalen JavaScript Community gepflegt und vorangetrieben.

Sie brauchen TypeScript Expertise für Ihre Web App? Schreiben Sie uns unverbindlich, wir freuen uns drauf!

Michael Jaser

Ihr Ansprechpartner: Michael Jaser, Co-Founder

Wozu ist TypeScript gut?

When JavaScript starts to suck: Über die Grenzen einer Programmiersprache

Viele Projektteams machen bei der Entwicklung komplexer Softwareprojekte auf Basis von JavaScript eine ähnliche Erfahrung: Auf eine produktive Initialphase, in der Feature auf Feature folgt, bremst sich das Projekt ein wenig aus. Selbst im erfahrensten und anspruchsvollsten Dev-Team häufen sich mit der Zeit beim Zusammenspiel von Services, APIs und Modulen die Bug- und Refactoringtickets. Neue Teammitglieder brauchen länger für die Einarbeitung ins Datenmodell: Welche Eigenschaften hat ein User, was liefert dieses Modul im Fehler-, was im Erfolgsfall? Auch die besten Unit & Integration Tests können nicht vermeiden, dass Fehler erst zur Laufzeit auftauchen, die eingehende Überprüfung von Ein-und Ausgabewerten erfordern. Wird eine Funktion so geändert, dass sie statt einem Parameter nun zwei erwartet, müssen alle Stellen im Code ausfindig gemacht und angepasst werden, an denen diese Funktion aufgerufen wird. Mit großem Featurereichtum steigen auch Komplexität und Wartungsintensität einer App – so einfach, so wahr.

Für welche Web Apps lohnt sich der Einsatz von TypeScript?

TypeScript ist für komplexe Apps gedacht (und solche, die es werden wollen). Der Name ist Programm: ein statisches Type System ermöglicht es Entwicklern, von Beginn an Typen im Quellcode festzulegen, die zum Zeitpunkt der Kompilation geprüft und in valides JavaScript übersetzt werden. Der konsequente Einsatz von TypeScript im Projekt erhöht initial den Anspruch ans Skill-Level aller Entwickler:innen. Gerade im Verlauf eines Projektes kann sich dieser anfängliche Aufwand in vielen Bereichen amortisieren – Im Klartext: mehr Lesbarkeit im Code ergibt leichteres Debugging, weniger Laufzeitfehler, robustere Software. Unsere Senior-Entwickler:innen berichten von einer angenehm gleichbleibenden "Velocity" – einer Entwicklungsgeschwindigkeit, die über einen längeren Zeitraum nicht langsamer wird, sondern konstant bleibt.

Screenshot einer TypeScript Intellisense Fehlermeldung und deren Auflösung

TypeScript-Intellisense mit VSCode: Anzeige der für diese Funktion notwendigen Argumente als Overlay

Tolle Typisierung – weniger Laufzeitfehler?

Richtig einsetzt kann TypeScript Fehler vermeiden, die ansonsten erst zur Laufzeit auftauchen. Ein Beispiel aus der Praxis: In einem groß angelegten Refactoring stellte der Konzern Airbnb in den letzten Jahren seine Codebasis auf TypeScript-Basis um. Die zuvor angefallenen Bug Reports wurden in einer Post-Mortem-Studie monatelang analysiert. Das Ergebnis: 38 % aller Bugs in der Airbnb-Codebasis wären mit TypeScript vermeidbar gewesen – so das Fazit der Airbnb-Softwareentwicklerin Brie Bunge, vorgestellt in ihrem Talk Adopting TypeScript at Scale auf der JSConf Hawaii im Jahr 2019. Auch unsere Entwickler:innen kennen Projektstände mit und ohne TypeScript, und bestätigen: jeder Fehler, der bereits zum Zeitpunkt der Kompilierung erkannt wird, bedeutet ein Laufzeitfehler weniger. Tolles Tooling wie Autocompletion macht's möglich. Schon während der Eingabe einer Codezeile liefert ein IDE wie VSCode wichtige Informationen als praktisches Overlay mit.

Infografik: TypeScript versus JavaScript

JavaScript versus TypeScript

JavaScript oder TypeScript?

TypeScript ist keine komplett eigenständige Programmiersprache, sondern setzt als Superset von JavaScript auf diese Sprache gewissermaßen "noch was drauf". Im Hinblick auf diese 100-prozentige Kompatibilität von JavaScript und TypeScript erübrigt sich also die Frage nach dem „Entweder-Oder“. Im Sinne der Erfinder ist ein JavaScript Programm zugleich auch ein gültiges TypeScript Programm – oder anders gesagt: Jede in JavaScript geschriebene Zeile ist auch valider TypeScript Code. So kann in einer Datei mit der Endung .ts auch problemlos JavaScript geschrieben werden. Das Risiko, dass etwa beide Sprachen auseinanderdriften, ist gering. Dass das auch so bleibt, wird nicht zuletzt sichergestellt durch Anders Hejlsbergs Commitment – und die Nähe zu einer weltweiten lebendigen Open-Source Community. Die Umstellung des Tech Stacks auf TypeScript ist also eher eine Erweiterung um bestimmte Sprachfeatures wie Type Declarations, die dann im Sourcecode bestehen. Der bisherige JavaScript-Code kann bleiben – und die beliebtesten JavaScript Libraries weiterverwendet werden.

TypeScript als Supserset von JavaScript: Infografik

Browser können kein TypeScript lesen – der TypeScript-Compiler kompiliert TypeScript-Code wieder zu JavaScript-Code um.

Die wichtigsten TypeScript Vorteile

Unser Kollege Johannes meint: „Immer, wenn ich Schwierigkeiten hab, Code in TypeScript zu schreiben, merke ich, dass ich noch eine Ecke zu kompliziert gedacht hab.“ Mit TypeScript können erfahrene Entwicklerinnen auch ohne Datenmodell eine Logik zügig „runterprogrammieren“. Hier eine Übersicht, welche Vorteile TypeScript noch bieten kann:

  • Exzellente Unterstützung durch alle gängigen Editoren und IDEs (Unsere Empfehlung: VSCode)

  • Permanente Weiterentwicklung der Sprache durch das Microsoft Konsortium & die TypeScript Community

  • Natürlicher Umstieg für erfahrene Entwickler:innen anderer „Hochsprachen“ wie C# und Java

  • Moderne Sprachfeatures – ganz nah dran an den neuesten JavaScript-Entwicklungen des TC39 Comittees

  • Früheres Erkennen von Fehlern führt zu mehr Produktivität & robusterer Software

  • ESLint und TypeScript: Traumkombi

  • Großartige Kompatibilität & Support mit den größten Frameworks (z.B. React, Angular, Vue)

5 Don’ts bei der Umstellung auf TypeScript

Bei Peerigon programmieren wir seit 2018 mit TypeScript, da kommt einiges an Learnings zusammen. Hier unsere Top 5 der gängigen TypeScript-Don’ts (damit ihr sie nicht mehr machen müsst)

Praktische Tipps für TypeScript Anfänger

Last, but not Least: ein paar Praxistipps für alle, die TypeScript ausprobieren möchten. Am Besten gleich loslegen!

  • Tolles Tool: der Typescript-Playground auf der offiziellen Docs-Seite eignet sich ideal, wenn man schnell mal Code ausprobieren und ausführen will. Mit Editor, Live-View und Optionen zum Teilen mit Kolleg:innen.
  • Wenn größere Objekte wie Http-Requests typisiert werden sollen, kann man sie schon mal durch Typehole jagen. Typehole erstellt automatisch Typings und nimmt einem damit die erste Hürde der Typisierung.
  • Nichts für absolute Beginners: In den kleinen, aber kniffligen Trainingseinheiten von Type Callenge können Entwickler:innen ihr Wissen unter Beweis und die eigenen TypeScript-Skills auf die Probe stellen.
  • Kleiner Tipp für Teams, die ihren professionellen Tech Stack umstellen wollen: Die Fallhöhe steigt mit dem Fokus auf Produktivität – und damit auch das teaminterne Frustpotential. Etwas TypeScript-Vorerfahrung sollte im Projekt vorhanden sein – Im Zweifel holt euch für die erste Phase der Umstellung Senior-Support mit dazu.

Starke Partner für TypeScript Apps

Unsere Softwareentwickler:innen bringen TypeScript-Methoden dort zum Einsatz, wo sie Sinn machen. Ob Starthilfe beim Setup oder lückenlose Überführung bestehender Codebases: Fragen uns Sie einfach an!