- Ein Refactoring-PR im Svelte-Repository sorgte 2023 für Aufmerksamkeit unter TypeScript-Skeptikern, als auf JSDoc-basierten Code umgestellt wurde
- Svelte erklärte, dies sei keine anti-TypeScript-Haltung, sondern Teil einer fortgesetzten Abhängigkeit von TypeScript
- Der Text betont, dass JSDoc und TypeScript kein Gegensatz sind, sondern dass JSDoc selbst ein Teil von TypeScript ist
- TypeScript fungiert als IntelliSense-Engine und übernimmt sowohl die Auswertung von JSDoc-Kommentaren als auch die automatische Codevervollständigung
- JSDoc bietet ohne Build-Schritt dieselben statischen Analysefähigkeiten und erfüllt in modernen JS-Projekten praktisch die gleiche Rolle wie TypeScript
Der Svelte-PR und der Hintergrund der Debatte
- Im Mai 2023 schaffte es ein internes Refactoring-PR aus dem Svelte-Repository auf die Startseite von Hacker News
- In diesem PR wurden Typdeklarationen aus
.ts-Dateien in JSDoc-Kommentare innerhalb von .js-Dateien verlagert
- Manche interpretierten das als Ablehnung der Vorteile von TypeScript
- Svelte-Gründer Rich Harris erklärte auf HN selbst: „Das ist nicht gegen TypeScript gerichtet“
- Er erwähnte, dass Sveltes Bekenntnis zu TypeScript weiterhin sehr stark ist
- Danach erschienen zahlreiche Beiträge zum Vergleich „TypeScript vs. JSDoc“, und die Sichtweise verbreitete sich, JSDoc sei „TypeScript ohne Build-Schritt“
Ursprung und Wesen von TypeScript
- Ende der 2000er bis Anfang der 2010er Jahre galt JavaScript als Sprache mit zu wenig Autovervollständigung und Typsicherheit
- Microsoft-Entwickler begegneten dem, indem sie mit ScriptSharp C#-Code in JS umwandelten
- Vor diesem Hintergrund entstand TypeScript und startete seinem Wesen nach als Build-Tool zur Verbesserung der JS-Entwicklung
TypeScript ist IntelliSense
- TypeScript ist nicht nur eine Sprache, sondern fungiert als IntelliSense-Engine
- Auch ohne
.ts-Dateien werden Funktionen wie Codevervollständigung, Parameterinformationen und Symbolnavigation vom TypeScript-Sprachdienst bereitgestellt
- In den meisten Editoren läuft beim Schreiben von JS-Code der TypeScript-Dienst im Backend
TypeScript ist JSDoc
- Der TypeScript-Sprachdienst wird auch für die Auswertung von JSDoc-Kommentaren verwendet
- Im CHANGELOG von TypeScript finden sich häufig Einträge zu neuen JSDoc-Funktionen
- Auch JSDoc-basierte Projekte lassen sich mit
tsconfig.json konfigurieren, und mit dem Befehl tsc ist eine Typprüfung möglich
- Entwickler, die JSDoc verwenden, nutzen also bereits TypeScript
Erfahrungen mit JSDoc-basierten Projekten
- Der Autor berichtet von der Erfahrung, das Frontend eines bestehenden Projekts auf Basis von JSDoc-Typkommentaren neu geschrieben zu haben
- Abgesehen von Laufzeitfunktionen wie Enums (
enum) lässt sich der Großteil der TypeScript-Ausdrucksmöglichkeiten auch mit JSDoc umsetzen
- Generics haben eine etwas kompliziertere Syntax, fördern dafür aber eine aktivere Nutzung der Typinferenz
- In JSDoc-Projekten kann man beim Klick auf eine Funktion direkt zum tatsächlichen Code springen, was die Developer Experience verbessert
- Das TypeScript-Tooling-Ökosystem lässt sich auch in JSDoc-Projekten wiederverwenden
- Zum Beispiel können Bibliotheken, die Typen aus OpenAPI- oder GraphQL-Schemata generieren, diese als JSDoc-Kommentare erzeugen
Fazit und weitere Beispiele
- JSDoc ist keine Alternative zu TypeScript, sondern teilt sich dasselbe System statischer Analyse
- Es ermöglicht gleichwertige Typsicherheit, während der Build-Schritt entfällt
- Zusätzlich wird erwähnt, dass auch das webpack-Projekt auf JSDoc migriert wurde
- Als TypeScript-Experte vertritt der Autor klar die Position: „JSDoc ist TypeScript“
Noch keine Kommentare.