TypeScript in realen Projekten: Fallstudien von Unternehmen, die Sie überraschen werden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

TypeScript in realen Projekten: Fallstudien von Unternehmen, die Ihre Vorstellung von Frontend auf den Kopf stellen



Wenn Sie immer noch denken, dass TypeScript nur ein „Typ-Add-on“ ist, das die Entwicklung verlangsamt, dann übersehen Sie das Wesentliche. Diese Sprache ist bereits zum Standard in den größten IT-Unternehmen der Welt geworden. Slack, Airbnb, Lyft – sie sind nicht nur auf TypeScript umgestiegen, sondern haben dies mit messbarem Nutzen getan: Sie haben Bugs um 40% reduziert, das Onboarding neuer Mitarbeiter beschleunigt und die Zeit für Code-Reviews verkürzt.



In diesem Artikel analysieren wir drei reale Fallstudien zur Einführung von TypeScript. Sie sehen nicht nur trockene Zahlen, sondern auch lebendige Codebeispiele, die Sie an Ihre eigenen Projekte anpassen können. Los geht's!



Fallstudie 1: Slack – Wie TypeScript vor „höllischen“ Typ-Bugs rettete



Slack ist eines der ersten großen Projekte, das sich für eine vollständige Migration von JavaScript zu TypeScript entschieden hat. Im Jahr 2019 gab das Team bekannt, dass es das gesamte Frontend (über 500.000 Codezeilen) umschreibt. Warum? Der Hauptgrund: Implizite Bugs während des Refactorings.



Stellen Sie sich vor: Sie haben eine Funktion, die ein Benutzerobjekt entgegennimmt und dessen Namen zurückgibt. In JavaScript sieht das harmlos aus:



function getUserName(user) {  return user.name;}


Aber was, wenn jemand null oder ein Objekt ohne das Feld name übergibt? In TypeScript wird ein solcher Fehler bereits zur Kompilierzeit abgefangen:



interface User {  id: number;  name: string;  email?: string;}

function getUserName(user: User): string { return user.name; // Fehler, wenn user — null, wird nicht durchkommen}


Ergebnis von Slack nach der Migration:

  • Reduzierung der Anzahl von Bugs in der Produktion um 38%
  • Beschleunigung von Code-Reviews um 25% (Typen dienen als Dokumentation)
  • Verkürzung der Zeit für das Debuggen komplexer Bugs um 50%


Übrigens verwendet Slack den strikten TypeScript-Modus (strict: true), der Entwickler zwingt, alle Randfälle zu behandeln. Dies ist besonders wichtig in großen Teams, in denen jeder sein eigenes Modul schreibt.



Fallstudie 2: Airbnb – Wie TypeScript die UX verbesserte und die Anzahl der Fehler bei Buchungen reduzierte



Airbnb ist ein weiterer Gigant, der 2021 auf TypeScript umgestiegen ist. Ihr Hauptproblem: die komplexe Buchungslogik, bei der Daten, Preise, Rabatte und Verfügbarkeit berücksichtigt werden müssen. Ein einziger Typfehler – und der Benutzer sieht einen falschen Preis.



Hier ist ein Beispiel, wie TypeScript half, einen kritischen Fehler zu vermeiden. Stellen Sie sich eine Funktion zur Berechnung der Buchungskosten vor:



// JavaScript — potenzieller Fehlerfunction calculateTotal(price, nights, discount) {  return price * nights - discount;}

// Aufruf mit falschem TypcalculateTotal("100", 3, 0); // "1003" — String-Konkatenation!


In TypeScript ist eine solche Situation unmöglich:



function calculateTotal(price: number, nights: number, discount: number = 0): number {  return price * nights - discount;}

// Kompilierungsfehler: Argument of type 'string' is not assignable to parameter of type 'number'.// calculateTotal("100", 3, 0);


Was die Migration Airbnb gebracht hat:

  • Reduzierung der Anzahl von Bugs in kritischen Modulen (Buchung, Zahlungen) um 45%
  • Beschleunigung der Entwicklung neuer Funktionen um 30% durch Autovervollständigung in der IDE
  • Verbessertes Onboarding: Neue Entwickler verstehen die Datenstrukturen schneller


Airbnb verwendet auch aktiv discriminated unions (unterscheidbare Vereinigungen) zur Behandlung verschiedener Anfragezustände. Zum Beispiel der Buchungsstatus:



type BookingStatus =   | { status: 'pending'; createdAt: Date }  | { status: 'confirmed'; confirmedAt: Date; roomNumber: number }  | { status: 'cancelled'; cancelledAt: Date; reason: string };

function handleBooking(booking: BookingStatus) { switch (booking.status) { case 'pending': console.log(`Wartet auf Bestätigung seit

Blogs

Buchempfehlungen