Vorwort zur ersten Ausgabe (2019)

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Im Frühjahr 2016 besuchte ich meinen alten Kollegen Evan Martin im Google-Büro in San Francisco und fragte ihn, worüber er sich freue. Ich hatte ihm diese Frage im Laufe der Jahre schon oft gestellt, denn die Antworten waren vielfältig und unvorhersehbar, aber immer interessant: C++ Build-Tools, Linux Audio-Treiber, Online-Kreuzworträtsel, Emacs-Skripte. Dieses Mal war Evan begeistert von TypeScript und Visual Studio Code.

Ich war überrascht! Ich hatte zwar schon von TypeScript gehört, aber ich wusste nur, dass es von Microsoft entwickelt wurde und dass ich fälschlicherweise glaubte, es hätte etwas mit .NET zu tun. Als lebenslanger Linux-Nutzer konnte ich nicht glauben, dass Evan auf das Team Microsoft aufgesprungen war.

Dann zeigte mir Evan VS Code und den TypeScript-Spielplatz und ich war sofort bekehrt. Alles ging so schnell, und die Code-Intelligenz machte es einfach, ein mentales Modell des Typsystems zu erstellen. Nachdem ich jahrelang Typ-Annotationen in JSDoc-Kommentaren für den Closure Compiler geschrieben hatte, fühlte es sich an wie typisiertes JavaScript, das wirklich funktionierte. Und Microsoft hatte einen plattformübergreifenden Texteditor auf Chromium aufgebaut? Vielleicht war dies eine Sprache und Toolchain, die es wert war, gelernt zu werden.

Ich war gerade bei Sidewalk Labs eingestiegen und schrieb unser erstes JavaScript. Die Codebasis war noch so klein, dass Evan und ich sie in den nächsten Tagen komplett in TypeScript umwandeln konnten.

Seitdem bin ich süchtig. TypeScript ist mehr als nur ein Typensystem. Es bringt auch eine ganze Reihe von Sprachdiensten mit, die schnell und einfach zu benutzen sind. Der kumulative Effekt ist, dass TypeScript die JavaScript-Entwicklung nicht nur sicherer macht: Sie macht auch mehr Spaß!

Brooklyn, NY
Oktober 2019

Danksagungen zur ersten Ausgabe

Es gibt viele Menschen, die dazu beigetragen haben, dass dieses Buch entstehen konnte. Danke an Evan Martin, der mich mit TypeScript bekannt gemacht und mir gezeigt hat, wie man darüber nachdenkt. Douwe Osinga, der mich mit O'Reilly zusammengebracht und das Projekt unterstützt hat. Brett Slatkin für seine Ratschläge zur Struktur und dafür, dass er mir gezeigt hat, dass jemand, den ich kenne, ein effektives Buch schreiben kann. An Scott Meyers für die Idee zu diesem Format und für seinen Blogbeitrag "Effective Effective Books", der mir wichtige Hinweise gegeben hat.

An meine Reviewer Rick Battagline, Ryan Cavanaugh, Boris Cherny, Yakov Fain, Jesse Hallett und Jason Killian. An alle meine Kollegen bei Sidewalk, die mit mir über die Jahre hinweg TypeScript gelernt haben. An alle bei O'Reilly, die geholfen haben, dieses Buch zu realisieren: Angela Rufino, Jennifer Pollock, Deborah Baker, Nick Adams und Jasmine Kwityn. An das TypeScript NYC-Team, Jason, Orta und Kirill, und an alle Redner. Viele Artikel wurden von den Vorträgen auf dem Meetup inspiriert, wie in der folgenden Liste beschrieben:

  • Punkt 3 wurde durch einen Blogbeitrag von Evan Martin inspiriert, den ich besonders aufschlussreich fand, als ich TypeScript zum ersten Mal lernte.

  • Punkt 7 wurde durch Anders' Vortrag über strukturelle Typisierung und keyof Beziehungen auf der TSConf 2018 und durch einen Vortrag von Jesse Hallett auf dem TypeScript NYC Meetup im April 2019 inspiriert.

  • Sowohl der Leitfaden von Basarat als auch die hilfreichen Antworten von DeeV und GPicazo auf Stack Overflow waren beim Schreiben von Punkt 9 wichtig.

  • Punkt 10 stützt sich auf ähnliche Ratschläge in Punkt 4 von Effektives JavaScript.

  • Inspiriert wurde ich zu Punkt 11 durch die große Verwirrung um dieses Thema beim TypeScript NYC Meetup im August 2019.

  • Punkt 13 wurde durch mehrere Fragen zu type vs. interface auf Stack Overflow stark unterstützt. Jesse Hallett schlug die Formulierung zur Erweiterbarkeit vor.

  • Jacob Baskin hat uns ermutigt und uns frühes Feedback zu Punkt 15 gegeben.

  • Punkt 18 wurde von mehreren Codebeispielen inspiriert, die imSubreddit r/typescript eingereicht wurden.

  • Punkt 24 basiert auf meinem eigenen Schreiben auf Medium und einem Vortrag, den ich im Oktober 2018 beim TypeScript NYC Meetup gehalten habe.

  • Punkt 29 basiert auf einem allgemeinen Ratschlag in Haskell ("illegale Zustände nicht darstellbar machen"). Die Geschichte der Air France 447 ist inspiriert von Jeff Wises unglaublichem Artikel aus dem Jahr 2011 in Popular Mechanics.

  • Punkt 30 basiert auf einem Problem, das ich mit den Mapbox-Typdeklarationen hatte. Jason Killian schlug die Formulierung im Titel vor.

  • Der Ratschlag zur Namensgebung in Punkt 41 ist allgemein bekannt, aber diese spezielle Formulierung wurde von Dan Norths kurzem Artikel in 97 Things Every Programmer Should Know (Kevlin, Henney, O'Reilly) inspiriert.

  • Artikel 64 wurde von Jason Killians Vortrag beim allerersten TypeScript NYC Meetup im September 2017 inspiriert.

  • Punkt 25 basiert auf den TypeScript 2.1 Release Notes. Der Begriff "evolving any" wird außerhalb des TypeScript-Compilers selbst nicht häufig verwendet, aber ich finde es nützlich, einen Namen für dieses ungewöhnliche Muster zu haben.

  • Artikel 46 wurde durch einen Blogbeitrag von Jesse Hallett inspiriert.

  • Punkt 47 wurde durch das Feedback von Tizian Cernicova-Dragomir in der TypeScript-Ausgabe Nr. 33128 wesentlich unterstützt.

  • Artikel 49 basiert auf der Arbeit von York Yao an dem Werkzeug type-coverage. Ich wollte so etwas und es existierte!

  • Artikel 66 basiert auf einem Vortrag, den ich beim TypeScript NYC Meetup im Dezember 2017 gehalten habe.

  • Artikel 52 ist David Sheldricks Beitrag auf dem Artsy-Blog über bedingte Typen zu verdanken, der das Thema für mich sehr entmystifiziert hat.

  • Punkt 70 wurde von einem Vortrag inspiriert, den Steve Faulkner, auch bekannt als southpolesteve, beim Meetup im Februar 2019 gehalten hat.

  • Artikel 55 basiert auf meinen eigenen Beiträgen auf Medium und meiner Arbeit am Typing-Checker-Tool, das schließlich in dtslint aufgegangen ist.

  • Punkt 72 wurde durch Kat Buschs Medium-Beitrag über die verschiedenen Arten von Enums in TypeScript sowie durch Boris Chernys Schriften zu diesem Thema in Programming TypeScript (O'Reilly) inspiriert/verstärkt.

  • Punkt 60 wurde durch meine eigene Verwirrung und die meiner Kollegen zu diesem Thema inspiriert. Die endgültige Erklärung findet sich bei Anders im TypeScript PR #12253.

  • Die MDN-Dokumentation war für das Schreiben von Artikel 75 unerlässlich.

  • Kapitel 10 basiert auf meinen eigenen Erfahrungen bei der Migration der alternden Dygraphs-Bibliothek.

Viele der Blogbeiträge und Gespräche, die zu diesem Buch geführt haben, habe ich über das hervorragende Subreddit r/typescript gefunden. Ich bin vor allem den Entwicklern dankbar, die dort Code-Beispiele zur Verfügung gestellt haben, die für das Verständnis häufiger Probleme bei TypeScript-Anfängern wichtig waren. Danke an Marius Schulz für den TypeScript Weekly Newsletter. Obwohl er nur gelegentlich erscheint, ist er immer eine hervorragende Quelle für Material und eine gute Möglichkeit, sich über TypeScript auf dem Laufenden zu halten. Anders, Daniel, Ryan und dem gesamten TypeScript-Team bei Microsoft für die Gespräche und das Feedback zu den Problemen. Die meisten meiner Probleme waren Missverständnisse, aber es gibt nichts Befriedigenderes, als einen Fehler zu melden und sofort zu sehen, dass Anders Hejlsberg ihn selbst behebt!

Und schließlich möchte ich mich bei Alex bedanken, der mich bei diesem Projekt so sehr unterstützt hat und so viel Verständnis für die vielen Feiertage, Morgens, Abende und Wochenenden aufbrachte, die ich brauchte, umes fertigzustellen.

Get Effektives TypeScript, 2. Auflage now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.