TypeScript 6.0 und seine Go-basierte Zukunft

Letzte Aktualisierung: 03/18/2026
  • TypeScript 6.0 ist die letzte größere Version des JavaScript-Compilers und bereitet Projekte auf das kommende native, auf Go basierende TypeScript 7.0 vor.
  • Das Update verschärft die Standardeinstellungen (strenger Modus, moderne ES-Ziele, ESM-Module), fügt neue Plattform-APIs hinzu und führt ein Flag für die stabile Typreihenfolge ein.
  • Viele ältere Optionen und Modulformate (ES5, AMD/UMD/SystemJS, baseUrl, klassische Auflösung) werden vor ihrer vollständigen Entfernung in Version 7.0 als veraltet markiert.
  • Die Leistungssteigerungen durch die Neuentwicklung von Go versprechen etwa 7- bis 10-mal schnellere Builds, einen geringeren Speicherverbrauch und reaktionsschnellere Editor-Tools für große Codebasen.

TypeScript 6.0 Future basierend auf Go

TypeScript 6.0 ist eine besondere Version: Es gibt keine weitere Iteration mehr, aber das letzte Mal wurde es über den aktuellen JavaScript-Compiler erstellt, das Geheimnis, dass ich mich seit den ersten Tagen des Projekts weiterentwickelt habe. Seither liegt der Schwerpunkt auf der Einführung von TypeScript 7.0, einer geschriebenen nativen Neuimplementierung und ich denke daran, Kompilationen in sehr kurzer Zeit bereitzustellen, mehr Speicher zu verbrauchen und einen Sprachdienst zu bieten, der am häufigsten auf Redakteure wie VS Code reagiert.

In der Praxis handelte es sich bei TypeScript 6.0 um eine speziell entwickelte Lösung 5.9 Linie y la futura 7.0: Passen Sie viele Kompilierungsoptionen für lineare Anpassungen an die Realität des modernen JavaScript-Ökosystems an, stellen Sie neue Standard- und API-Kapazitäten vor und vernachlässigen Sie die seit mehr als einem Jahrzehnt angesammelte Herausforderung (Ziele sind veraltete Systeme, veraltete Modulsysteme und Konfigurationsbänder, die im Jahr 2026 nicht mehr verfügbar sein werden). Alles, was ich meine, war, in Essen, das andere Modell, das die Desarrolladores ya conocen.

TypeScript 6.0 ist die neueste Version des klassischen Compilers

Microsoft hat klargestellt, dass TypeScript 6.0 die neueste Version ist und den JavaScript-Compiler-Code zum ersten Mal aktualisiert hat.. Seit 7.0 hat der Protagonist das neue native Backend in Go eingeführt, mit dem Namen „Corsa“, der in Form von Builds für Nacht und einer speziellen Erweiterung für VS-Code verfügbar ist, die sich an realen Tests orientiert.

Dies ist eine Neubewertung, bei der Sie die Sprache nicht ändern müssen, da die Technologie für die Analyse, den Check-in und die Emission von JavaScript eingesetzt wird. Das Ziel besteht darin, die ersten Probleme zu lösen, die ich seit einigen Jahren am deutlichsten sehe: Zeiträume für die Bereitstellung von Sprachdiensten in großen Projekten, Zusammenstellungen, die nur wenige Minuten in CI dauern, und einen erhöhten Speicherbedarf, sobald die Monorepo-Datei gelöscht wird.

Das Team hat sehr aggressive Absichtserklärungen veröffentlicht, um den tatsächlichen Compiler von zu Hause aus mit realen Projekten zu vergleichen. Der Code wie der VS-Code (vor 1,5 Millionen Zeilen) dauerte 77,8 Sekunden und eine vollständige Analyse mit dem klassischen Compiler dauerte 7,5 Sekunden mit dem Compiler in Los Angeles, es dauerte mehr als 10 Sekunden. Dramatiker mit 356.000 Zeilen, mehr als 11,1 Sekunden und 1,1 Sekunden, und TypeORM mit 270.000 Zeilen, 17,5 und 1,3 Sekunden.

Diese Zahlen bauen nicht nur im CI am schnellsten auf; Auch das Erlebnistagebuch ist im Herausgeber enthalten. Auf der Grundlage des VS-Codes dauerte die Sprachdienstzeit etwa 9,6 bis 1,2 Sekunden, mit einer Reduzierung der Speicherkapazität. Für viele Geräte ist es wichtig, dass Sie nicht in der Lage sind, als „normal“ zu gelten. Es dauerte mehrere Sekunden, bis Sie den Herausgeber verließen oder einen vollständigen Scheck ausstellten tsc --noEmit.

Der Rendimiento geht nicht nur von der Kompilierung eines nativen Codes aus, sondern auch von der Kapazität zur Verwendung von Multithreading mit gespeicherten Daten. Der Compiler kann die Analyse eines einzelnen Projekts parallelisieren und auch die Kompilierung mehrerer Projekte parallel durchführen, während Projektreferenzen und Modalitäten herangezogen werden --build. Alles in allem mit einer neuen Implementierung inkrementeller Kompilierungen.

TypeScript-Compiler-Zukunft in Go

Möchten Sie TypeScript in Go und Rust in einer anderen Sprache neu schreiben?

Einer der Entscheidungen mit mehr Kommentaren folgte die Wahl von Go als Sprache für den neuen Compiler, beispielsweise Rust, C++ und andere mit anderen Partnern verbundene Optionen, die auf dem neuesten Stand sind. Der erste Blick könnte großartig sein, denn ich habe ihn in einem Ökosystem, das viele Werkzeuge einer neuen Generation (SWC, OXC usw.) verwendet, neu geschrieben.

Das TypeScript-Equipment besteht aus verschiedenen praktischen Motiven, um es von Go zu lernen: Meiner Meinung nach passt sich der Erinnerungsspeicher sehr gut an die Speicherkarten-Gönner an, die einem Compiler zur Verfügung gestellt werden, und reduziert die Ladung, indem er die Speicher manuell in einem vollständigen Code verwaltet. Andererseits ermöglichen die Sprachstruktur und ihr Typmodell eine relative direkte Übersetzung des vorhandenen TypeScript-Codes, im Gegensatz zu dem aufdringlicheren Stil, den ich nach Rust übertragen habe.

Auch die Propia-Filosophie von Go liegt weit zurück: Eine Sencillo-Sprache, mit einigen „Kreativen“-Formularen, die das Fehlen und eine klarere Orientierung an der Klarstellung des Codes haben. Da ich mich mit der Betreuung eines kritischen Projekts und dem langen Leben als TypeScript-Compiler beschäftigt habe, muss ich mit einem geringen Wartungsaufwand und einer Codebasis arbeiten, die für zukünftige Mitarbeiter am besten zugänglich ist.

Allerdings handelt es sich bei Rust nicht um einen Kritiker, sondern um eine pragmatische Linie zwischen dem Go-Stil und der TypeScript-Kultur. Ambos Sprachen sind vorrangig darauf ausgelegt, dass ihre „einfachen Funktionen“ von vornherein vorhersehbar sind, und zwar aufgrund der Experimentierfreudigkeit mit fortgeschrittenen Sprachkenntnissen oder extrem ausgefeilten Memoria-Modellen, die das tägliche Leben der Ausrüstung verkomplizieren können.

Parallel zum Compiler wurde durch die Migration auch die tiefgreifendere Einführung des Protokolls des Sprachservers (LSP) genehmigt., dass es anderen Editoren von VS Code möglich ist, die andere „Sprache“ mit dem neuen Backend zu bearbeiten und von der Bereitstellung abhängig von Ad-hoc-Integrationen zu profitieren.

Ich habe gerade TypeScript 6.0 installiert

Jetzt, da TypeScript 6.0 auf dem Weg zum Compiler in Go ist, werden am nächsten Tag reale und sichtbare Änderungen eingeführt, alles in Form von neuen Werten für Defekte, höherer Qualität und Ausrichtung mit den neuesten JavaScript-Spezifikationen. Die Idee ist, dass wir mit Version 7.0 die Überfahrt aufs Meer so angenehm wie möglich machen, da die Projektmanager die neuen Regläser des Spiels angenommen haben.

Uno de los cambios estrella es que el modo estricto (strict) pasa a estar activado por defekto. Im Laufe der Jahre empfahl ich Ihnen dringend, ein seriöses Projekt zu arrangieren "strict": true, aber die Tapferkeit des Defekts folgte später false. 6.0 Gehen Sie davon aus, dass die meisten modernen Designer ein Modell mit den höchsten Ansprüchen bevorzugen, und behalten Sie sich die Option zur Deaktivierung für den Fall vor, dass sie in einigen Fällen explizit angegeben werden "strict": false en tsconfig.json.

Außerdem werden die mit den Modulen und dem Ziel verknüpften Standardeinstellungen aktualisiert. Die neue Tapferkeit durch den Defekt module es esnextIch denke, dass das Ökosystem endgültig von ESM als Hauptformat dekantiert wurde, ich habe mich an Node.js gewandt und moderne Browser verwendet oder es von einem Bundler übernommen. A su vez, el target Implizit ist die ECMAScript-Version seit einem Jahr implizit, die TypeScript unterstützt (aktuell). es2025), eine Bewegung, die die Omnipräsenz von Runtimes Evergreen annimmt und von Plattformen auf Antiguas wie ES5 optimiert werden muss.

Eine weitere wichtige Neuerung ist das noUncheckedSideEffectImports Jetzt ist der Defekt aktiviert. Diese Möglichkeit besteht darin, Importe zu erkennen, die nur durch ihre sekundären Auswirkungen realisiert werden können, und die darauf hinweisen, dass es sich um grafische Fehler oder Abhängigkeiten handelt, die tatsächlich im Code explizit angegeben werden müssen. Aktivieren Sie die Liste der robusten neuen Projekte.

Stattdessen die Option libReplacement Wenn Sie es aufgrund eines Defekts im Rahmen der großen Projektmengen deaktivieren, müssen Sie noch andere Teile konfigurieren und ohne Embargo die Kosten in Form von Lösungen für fehlerhafte Module lösen. Aufgrund der allgemeinen Tendenz, sie nicht für diejenigen zu bezahlen, die nicht in den USA sind, hat die razonable Ära das Projekt mit der nötigen Gewissenhaftigkeit abgeschlossen.

Änderungen und Rückschlüsse: Weniger Sensibilisierung für den Kontext und die damit verbundenen Funktionen

Zusätzlich zu den Konfigurationsanpassungen enthält TypeScript 6.0 interessante Änderungen an den folgenden Punkten:. In einem klassischen Fall werden die Objektwörter mit Methoden eingegeben, die nicht durch einen Parameter der Funktion, sondern durch eine generische Abhängigkeit von einem anderen Eigentum abgedeckt werden, sodass das Spiel nur in der Reihenfolge der Tasten erfolgen kann.

Insbesondere sind die Funktionen, die mit der Syntax der Methode geschrieben wurden, auf einen Parameter beschränkt this Implizit, dass der Compiler diese Rückrufe als „im Kontext sinnvoll“ behandelt hat. Sobald die Rückschlüsse auf einen generischen Typ und der Zugriff auf einen kontextuellen Typ in die richtige Richtung übertragen werden, bevorzugt TypeScript diese Rückrufe zur nächsten Stunde und wird wie folgt markiert unknown Parameter, die in der Realität durch andere Teile des Objekts perfekt bestimmt werden.

In 6.0 hat der Compiler darauf geachtet, dass eine Funktion im Kontext des Parameters nicht mehr sinnvoll ist this Nunca se utiliza dentro de su cuerpo. In dieser Form wurde eine Funktion als Methode erklärt, ohne dass darauf verwiesen wurde this Da es sich um eine Form handelt, die einer Pfeilfunktion sehr ähnlich ist, muss sie als Informationsquelle für die Schlussfolgerung der Art, unabhängig von der Anordnung der Eigenschaften des Objekts, genehmigt werden.

Es ist möglich, eine Kategorie von Fehlern zu reduzieren, die möglicherweise verwirrend sind, nachdem der Entführer einen Parameter wie er eingegeben hat unknown Die Sünde ist sehr gut für mich. Es handelte sich um eine Ergonomie-Änderung: Das Modell der unterlegenen Typen war nicht verändert, aber die Schlussfolgerungstheorie war besser als die, die die meisten Enthusiasten erwarteten, als sie in diesem Fall auftraten.

Subpath-Importe mit Prefijo #/ und bessere Modulauflösung

TypeScript 6.0 wurde am ersten Tag mit der Unterstützung von Subpath-Importen ausgestattet, gefolgt von den letzten Node.js-Spezifikationen. Hasta hace poco, al declarar el campo imports en package.json, los alias internos debían empezar con # Folgen Sie dem Text, zum Beispiel #root o #utils. Diese Einschränkung führte zu einer willkürlichen Entscheidung, da das einzige Ziel der Alias-Ära in der Praxis ein für den Produktionscode gültiges Prefijo erforderte.

Die neuesten Versionen von Node 20 ermöglichen es, Unterpfade zu definieren, die mit der Datei verknüpft werden sollen #/, es bedeutet, dass eine „intermedio“-Kennung obligatorisch ist. Das ist so einfach wie meine Gewohnheiten, es ähnelt denen, die Sie mit Betrügern beschäftigt haben, aber es ist Ihnen lieber @/... o #/... como raíz logica del proyecto.

TypeScript ist mit Modulauflösungsmodi kompatibel node20, nodenext y bundler. Dies bedeutet, dass Projekte genutzt werden müssen "imports": { "#": "./dist/index.js", "#/*": "./dist/*" } en package.json Jetzt können Sie sich über die automatische Vervollständigung freuen und kohärente Typen mit der Formel überprüfen, in der Node diese Routen wiedererlangt.

Eine weitere praktische Möglichkeit besteht in der Kombinationsmöglichkeit --moduleResolution bundler mit --module commonjs. Hasta ahora, la resolución bundler estaba limitada a módulos esnext o preserve, pero con la deprecación de --moduleResolution node (Alias node10), viele Codebasen, die von CommonJS gesendet werden, erfordern einen trennbaren Migrationsweg. Diese Kombination aus Würfeln ist genau diese Farbe.

Die neue Bandera –stableTypeOrdering und die Vorbereitung für die Parallelisierung in 7.0

Einer der tiefgreifendsten strukturellen Veränderungen des nativen Compilers in 7.0 ist die Einführung eines parallelen AnalysemodellsWenn Sie mehrere „Trabajadores“ verwenden, können Sie den Sintaxis-Arbol und den parallelen Tipo-Graphik aufzeichnen. Es stellt ein seltsames Problem dar: Wenn die IDs von Typen und Symbolen von der Reihenfolge abhängen, in der sie ermittelt werden sollen, kann das Ergebnis nicht bestimmt werden, sobald die Reihenfolge erreicht ist, nachdem es definitiv perfekt war.

Während der Compiler aktuell ist, erhalten die Typen eine inkrementelle Kennung, die in der Reihenfolge angezeigt wird, in der sie angezeigt werden, und diese IDs werden unter anderem verwendet, um Gewerkschaften zu bestellen und Eigenschaftenlisten aufzulisten. Dies wird durch die 5.x-Ordnung eines solchen erklärt 100 | 500 podía invertirse a 500 | 100 Es wird eine wörtliche Konstante eingeführt 500 Bevor Sie ihn erwähnen 100 in der Datei.

Bei 7.0 ist das Verhalten inakzeptabel, da der parallele Auswurf dazu führen kann, dass die verschiedenen Generas-Prozesse für das Mismo-Programm unterschiedlich sind. Die Lösung wurde nach einem Algorithmus zur Bestimmung der Reihenfolge entwickelt, der auf dem Inhalt der Objekte des Typs und den Symbolen basiert, die in der Reihenfolge der Beschreibung enthalten sind. Auf diese Weise wird die Misma-Gewerkschaft immer wieder von der Misma-Forma gedruckt (100 | 500, zum Beispiel), unabhängig davon, ob Sie den Code gelesen haben.

Um Unstimmigkeiten vor der Migration erkennen zu können, führt TypeScript 6.0 die Option ein --stableTypeOrdering. Als ich es aktivierte, übernahm der klassische Compiler die für die Verwendung von Version 7.0 übliche Strategie zur Ordnungswidrigkeit und reduzierte die Zeit beim Vergleichen mit anderen Versionen, insbesondere in den Emissionserklärungsdateien und in den Fehlermeldungen.

Beachten Sie, dass --stableTypeOrdering Die Kosten für die Rückzahlung waren beträchtlich, bei einer Rate von bis zu 25 % in allen Projekten. Die offizielle Empfehlung besteht darin, die formelle Taktik während der Phasen der Migration oder Beseitigung von Unterschieden zu verwenden, nicht als dauerhafte Konfiguration und für alle anderen.

Neue Ziele und APIs der Plattform: es2025, Temporal, upsert und RegExp.escape

TypeScript 6.0 enthält das Ziel und ist mit Bibliotheken verbunden es2025 beide target wie um lib. Es gibt in ES2025 keine neuen Sprachkonstruktionen, sondern eine Konsolidierung verschiedener APIs, die im Standardisierungsprozess abgeschlossen wurden RegExp.escape, nuevos métodos en Promise, colecciones e iteradores.

Auf diesem neuen Niveau erklärten einige, dass sie vor dem Tod gelebt hätten esnext ziehen nach es2025Einschließlich Promise.try, nuevos métodos de Iterator y operaciones añadidas a Set. Es ist möglich, dass Projekte, die einfach auf den neuesten Stand der Technik-APIs konsolidiert werden, nicht auf die Option „experimentell“ zurückgreifen müssen esnext.

Einer der großen Protagonisten in 6.0 ist die Einbindung von Tipps für die API Temporal, der Nachfolger Date in JavaScript. Zeitlich gesehen, auf Stufe 3 und auf dem Weg, der auf der Plattform integriert ist, erhalten Sie präzise Tipps für Augenblicke, Tage, Stunden, Stunden- und Kalenderbereiche und vermeiden viele klassische Fehler, die mit dem aktuellen Fecha-System verbunden sind.

TypeScript legt die Zeittypen offen, sobald es verfügbar ist esnext o se indica explícitamente "lib": o "esnext.temporal". Es ist möglich, mit Temporal zu experimentieren, da es sich um Laufzeiten handelt, die Sie für mittlere Polyfills benötigen, mit vollständiger Unterstützung für automatische Vervollständigung und Überprüfung der Preise.

Zuletzt war es noch nicht so lange her, dass im Teambereich die Möglichkeit bestand, Tipps für die „Upsert“-Methode zu erhalten Map y WeakMap: getOrInsert y getOrInsertComputed. Formalisiert in einem ECMAScript-Property, das Stufe 4 durchgeführt hat, sind diese Code-Methoden ein häufig vorkommender Benutzer: „Wenn der Schlüssel existiert, verwenden Sie ihn; wenn nicht, geben Sie diesen Wert ein (oder das Ergebnis dieser Funktion) und entwickeln Sie ihn.“

Mit getOrInsert, der Code, der vor einer Sekunde eingegangen ist has, get, set Die zeitliche Almacenamiento kann um ein klares und klares Leben reduziert werden. Y getOrInsertComputed Erlauben Sie uns, die Tapferkeitsberechnung für einen Defekt erneut durchzuführen, nachdem Sie bestätigt haben, dass der Schlüssel nicht vorhanden ist. Das Vermeiden unnötiger Kosten, sobald die Auswurfrouten seltener erforderlich sind, erfordert einen Ersatz.

Gleichzeitig beträgt die neue statische Funktion 6.0 RegExp.escape, ein anderes von TC39 genehmigtes Objekt. Dies ist eine Methode, die eine Woche lang funktioniert und eine geschützte Version für interpolare Kommunikation in regulären Ausdrucksformen entwickelt, die den Entwicklern von Escape-Memory-Schreiben hilft und die Gefahr von Schwachstellen oder Bugs reduziert, die in gedruckten Texten verwendet werden.

DOM-Aktualisierungen und globale Bibliotheken: dom.iterable integriert und rekonfiguriert die Bibliothek

Die DOM-Bibliothek von TypeScript ist seit 6.0 auch ein Tag zuvor verfügbarDie Dateien lib.dom.iterable.d.ts y lib.dom.asynciterable.d.ts, was vorher optional für Entornos ohne Unterstützung vorgesehen war Iterable y AsyncIterable, se betrachte einen Teil davon ganzheitlich lib.dom.d.ts.

In der Praxis ist es wichtig, dass Sie nichts tun müssen "dom.iterable" a la matriz "lib" Sie können es direkt über die DOM-Sammlungen lesen NodeList o HTMLCollection. Mit "lib": Eigentlich ist es eine Logik auf der ganzen Welt, dass die Navigatoren keine Unterstützung für Iteratoren haben, weil sie in der Praxis nicht existieren.

Si un proyecto ya claraba tanto dom als dom.iterable, kann Ihre Konfiguration ohne eingeschränkte Funktionalität vereinfacht werden. Die Anzahl der hinzugefügten Bibliotheken ist noch gültig, aber Ihre jüngeren Archive haben keine Zeit mehr verloren, weil alle Inhalte mit der Hauptbibliothek im Internet zusammengeführt wurden.

Eine viel schlimmere Veränderung wirkte sich auf den Feldweg aus types de compilerOptions en tsconfig.json. Hasta ahora, cuando types Dies ist nicht spezifisch, TypeScript wird gelöscht node_modules/@types Dazu gehört auch die formelle Implikation aller verfügbaren Pakete, die in die globalen Prozesssymbole eingeführt werden @types/node, @types/jest Und andere Pakete, der Code darf nicht direkt importiert werden.

Dieses Verhalten ist mit wichtigen Kosten für Groß- oder Einzelprojekte verbunden und kann daher nicht mit mehreren Übergangsabhängigkeiten koexistieren, zusätzlich zur Einführung von Ruido und möglichen Konflikten zwischen globalen Definitionen, die in der Realität nicht erforderlich sind. In 6.0, der Wert für den Defekt types pasa a ser un array vacío [].

Die praktische Konsequenz besteht darin, dass die Projekte in der Zwischenzeit ausdrücklich erklären müssen, dass Pakete globaler Art benötigt werden, zum Beispiel "types": . Vieles ist schon seit längerem sinnvoller Kompilierungszeit (zwischen 20 % und 50 % gegenüber den Daten, die mit Microsoft vergleichbar sind), einfach um die Ladung unterschiedsloser Art zu eliminieren, die wir jetzt verwenden.

Für Gäste ist es erforderlich, dass sie sich an das Verhalten halten, das sie benötigen, um „alles zu besorgen“, solange sie die Möglichkeit haben, dies zu tun "types": , que reactivará la enumeración masiva de @types. Nichtsdestotrotz, die Empfehlung für die Ausrüstung besteht darin, nur die unbedingt benötigten Pakete auszuwählen und aufzulisten, um ein Rendimiento wie eine Vorhersehbarkeit zu erzielen.

rootDir, tsconfig und andere passen die Benutzeroberfläche an

Andere Änderungen, die für die defekte Konfiguration relevant sind, sind die neue Semantik rootDir. Wenn Sie jedoch nicht darauf hinweisen, dass dies der Fall ist, leitet TypeScript den Projektinhalt als Verzeichnis ab, dessen Inhalt alle eingegebenen Archive nicht deklariert. Es ist erforderlich, dass der Compiler die gesamten Archivrouten analysiert, bevor er den Absender empfängt, die Logik übernimmt und die Kosten übernimmt.

In 6.0, der Wert für den Defekt rootDir Pasa a ser simplemente eldirectorio donde vive el tsconfig.jsonSolo en el caso de ejecutar tsc Ausgehend von der Befehlszeile ohne Konfigurationsdatei wird die Heuristik angewendet, um die Daten aus den Eingangsarchiven abzuleiten.

Wenn es sich um ein Projekt handelt, wurde mir gesagt, dass es sich um ein Beispiel handelt ./src Ich hoffe, dass die zusammengestellten Archive direkt in die Datenbank gelangen ./dist, ahora puede encontrarse con rutas como ./dist/src/index.js. Die Lösung wird in der Konfiguration wie folgt explizit angegeben "rootDir": "./src" y ajustar el patrón de include Folglich.

Es gibt noch eine kleine, aber wichtige Änderung im CLI-Verhalten, sobald es aufgerufen wird tsc Mit vielen Archiven und einem Verzeichnis, das Sie enthalten tsconfig.json. Kurz bevor die Konfigurationsdatei ignoriert wurde, kam es zu großer Verwirrung darüber, welche Optionen wirklich angewendet werden sollten. Ab 6.0 wird ein expliziter Fehler erzeugt, der von der Meldung begleitet wird tsconfig.json Ich bitte Sie nicht darum, die Archivierung auf der Befehlszeile zu bestätigen.

Wenn die Absicht besteht, sie zu ignorieren tsconfig.json Da es sich um eine Ad-hoc-Zusammenstellung von Archiven handelt, gibt es eine neue Flagge --ignoreConfig Dies bedeutet, dass dieser Fehler deaktiviert und dann aktiviert werden muss tsc Aufgrund ihrer wertvollen Eigenschaften aufgrund des Defekts wurde sie jedoch durch die Konfiguration des Projekts beeinträchtigt.

Veraltete Tasten: ES5, klassische Modulsysteme, baseUrl und mehr

Ein wesentlicher Teil von TypeScript 6.0 besteht aus veralteten oder direkten Eliminierungsoptionen und -kompatibilitäten, die nicht mit der Realität des Ökosystems in Einklang gebracht werden konnten. Diese Abwertungen können ab Version 6.0 „stummgeschaltet“ werden "ignoreDeprecations": "6.0" In der Konfiguration ist jedoch klar, dass die Microsoft-Meldung bereits 7.0 enthält.

Als Erstes wird das Ziel zerstört es5, que du longo time fue key to portar navigadores antiguos como Internet Explorer. Aufgrund der Enttäuschung von IE und der absoluten Hegemonie der Evergreen-Schiffe ist die Basis der Benutzer, die heute ES5 benötigt, als Grundnahrungsmittel übrig geblieben. Das neue Minimum an razonable pasa a ser es2015, und Sie müssen ES5 erneut mit einer externen externen Steuerung für das Downleveling beauftragen.

Relacionado con esto, la bandera --downlevelIteration Pierde sentido y se marca también como deprecada. Sein einziger Vorschlag war es, die semantische Iteration zu steuern, indem er auf ES5 stieß; Bei modernen Zielen war dies nicht der Fall, daher wurde die Version 6.0 durch eine Werbung angezeigt.

Für die Modulträger ist es wichtig, dass die Werte verloren gehen amd, umd, systemjs y none für Option module. Diese Formate waren in den letzten Jahren vor der Einführung des ESM und der modernen Bündelung von grundlegender Bedeutung, aber sie waren noch nicht in der Lage, in neuen Plänen eingesetzt zu werden. Wenn eine Anwendung heute von ihnen abhängt, empfiehlt es sich, auf ECMAScript-Module zu migrieren und die aktuelle Kompatibilität in einem Bundle oder einer speziellen Hardware zu delegieren, oder nur vorübergehend auf dem 5.x-System zu installieren.

Ebenso --moduleResolution node (auch genannt node10) Und --moduleResolution classic se declaran obsoletas en favor de nodenext y bundler. Der erste Blick auf die Präzision des aktuellen Node.js-Verhaltens und das Modulauflösungsmaterial (einschließlich Exportbedingungen, package.json moderns usw.) ist darauf zurückzuführen, dass die zweite Generation für Szenarien gedacht ist, die von Bundlern, Bun und anderen ähnlichen Geräten dominiert werden.

Einer der Verwerfungen, die sich am stärksten auf die vorhandenen Konfigurationen auswirken könnten, ist die Verzweiflung baseUrl Als Suchmechanismus für Module. Históricamente se usaba para prefijar paths, Aber auch wenn man einen allgemeinen Geschäftsgrundsatz in Betracht zieht, muss man sagen, dass ein „Resolver“-Importe in der Tat eine lange Zeit lang funktioniert. In 6.0 wird es eliminiert baseUrl y reemplazarlo por entradas de paths Explizite mit der kompletten Route, oder ein Comodín hinzufügen "*": Allein in dem Fall, in dem der Mensch dieses virtuelle Gelände braucht.

Auch die Möglichkeit, etwas zu tun, ist verloren esModuleInterop y allowSyntheticDefaultImports a false. Im Laufe der Jahre hat die empfohlene Konfiguration darin bestanden, diese Optionen zu aktivieren, um den Import von CommonJS-Modulen aus dem ESM-Code zu vermeiden. Mit 6.0 geht der Compiler davon aus, dass er den Modus „Sicheres Interop“ verloren hat und muss die Importe anpassen, die von der Anti-Semantik abhängig sind, zum Beispiel mit verändertem Importstil import * as express from "express"; von import express from "express";.

Die Flagge alwaysStrict deja igualmente de poder desactivarse. Aus praktischen Gründen muss ich den Code nur im JavaScript-Modus berücksichtigen, da dies hauptsächlich bei der Verwendung von reservierten Texten wie bei uns der Fall ist await, static, public o private Als Kenner mit dem Code „nicht eingeschränkt“ werden Sie von der Tapferkeit überzeugt this und Funktionen. Alle Fälle, die heute von diesen besonderen Umständen abhängen, müssen umgestaltet werden.

Por último, se elimina --outFile Als Option für die Verkettung mehrerer Einträge in einem einzigen Dateiverzeichnis. Da wir heute vor über 20 Jahren große Projekte mit Bundlern wie Webpack, Rollup, Esbuild, Vite oder Parcel verbinden, benötigen wir einen Mini-Bundler für TypeScript und denken nicht über eine gute Umkehrung nach. Für den Einsatz ist es jedoch erforderlich, eine Arbeitsmaschine in Ihre Pipeline einzuführen.

Syntax- und Richtlinienwechsel: Namespaces, Import Asserts und No-Default-Lib

Zusätzlich zu den Kompilierungsoptionen enthält TypeScript 6.0 auch einige Syntaxkonstruktionen, die in einen Konflikt mit der zukünftigen Entwicklung von JavaScript geraten. Ein bemerkenswerter Fall ist die Verwendung des Tastenschlüssels module Zum Deklarieren von Namespaces gibt es ein Kostüm für die ersten Sprachversionen.

Seit einigen Jahren empfiehlt die Form der Deklaration von Namespaces mit dem Wortlaut namespaceWährend module Es handelt sich um eine Marke, die in der Redaktion veraltet ist. Con 6.0, ese uso de module Bitte beachten Sie, dass dies nicht der Fall ist, da andere von ihnen in Zukunft propagiert werden Modulblöcke In JavaScript kommt es zu einer konzeptionellen Kollision mit dieser Antigua-Syntax.

Dies hat keinen Einfluss auf die Erklärungen externer Module declare module "paquete" { ... }, que siguen plenamente soportadasSolo se prohíbe el patron module Foo { ... } Es wird als klassischer Namensraum verwendet, der viele Menschen einschließt.

Der andere Teil, den ich mit den Ständen verbinden möchte, ist der Verzicht auf die Sintaxis von „Import Assertions“, die auf der Tastenkombination basiert asserts. Der Originalantrag des TC39-Teams lautete „Importattribute“, was den Benutzer einschränkte with en su lugar. In der Folge, Ausdrücke wie import data from "./file.json" asserts { type: "json" } Jetzt kommt es zu einem Fehler und Sie müssen es erneut verwenden with.

Abschließend die Anweisung des Triple Slash /// <reference no-default-lib="true"/> deja de ser soportada. Diese Bemerkung wird verwendet, um darauf hinzuweisen, dass die Bibliotheken nicht mehr geladen werden müssen, weil sie defekt sind, aber ihre Semantik war verwirrt und wurde zu Missverständnissen verurteilt. Als Alternative empfehlen wir Ihnen, Flags wie Claros zu verwenden --noLib o --libReplacement je nach gewünschtem Effekt.

Im Rahmen der JavaScript-Analyse mit JSDoc kann der native Compiler auch die Unterstützung spezieller Benutzer vereinfachen @enum o @constructor. Da dies in 7.0 konkreter ist, wurde darauf hingewiesen, dass die in den .js-Archiven gespeicherten Dateien „entspannt“ sind, damit sie nicht ordnungsgemäß funktionieren und mehr Fehler gemeldet werden müssen, da die Formulare expliziter dokumentiert werden müssen.

Zuletzt wurde TypeScript 6.0 im Großen und Ganzen von den Konfigurations- und Kompatibilitätslisten der letzten Jahrzehnte überarbeitet, um es an ein ESM-System anzupassen Gehen Sie in die Lage, die Parallelität maximal zu erkunden und ein noch schnelleres Erlebnis zu bieten, ohne die letzte Geschichte zu sammeln.

Typoskript
Verwandte Artikel:
TypeScript 5.9: Verbesserte Entwicklererfahrung und ein Blick in die Zukunft
Zusammenhängende Posts: