TypeScriptim Jahr AL2 023 - Amazon Linux 2023

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

TypeScriptim Jahr AL2 023

Anmerkung

Dieses Dokument enthält die wichtigsten Informationen zur TypeScript Node.js-basierten Ausführungsumgebung und deren Umgebung. Es behandelt auch einen typischen Entwicklungsablauf und erklärt, wie er in AL2 023 verpackt TypeScript ist, um eine konsistente und reproduzierbare Entwicklungsumgebung bereitzustellen.

TypeScript(TS) ist eine auf JavaScript (JS) basierende Programmiersprache, die alle Funktionen von JS bietet und sie auch um ein Typsystem erweitert. In einem typischen Szenario werden in TS geschriebene Programme zuerst in den JS-Code übersetzt und dann wie jedes andere reguläre JS-Programm von ausgeführtNode.js. In der spezifischen Terminologie von TS wird dieser Übersetzungsprozess als „Kompilierung“ bezeichnet und von einem „Compiler“ namens tsc ausgeführt. Der TSC-Compiler selbst ist in JS geschrieben, sodass er zur Ausführung auch eine JS-Laufzeitumgebung benötigt, wie z. Node.js Im Gegensatz zu einigen anderen JS-Laufzeitumgebungen bietet er Node.js derzeit nur experimentelle und leichtgewichtige TS-Unterstützung. Eine vollständige TS-Unterstützung, einschließlich der Typprüfung, erfordert weiterhin die Verwendung von Paketen von Drittanbietern, wie z. B. dem Typoskript. Der erwartete Weg, tsc (den TS-Compiler) für die Node.js Laufzeitumgebung zu erhalten, besteht darin, das Typescript-Knotenmodul zu installieren. Dies kann mit einem der Paketmanager, normalerweise npm, geschehen. Es gibt zwei Möglichkeiten, den TS-Compiler mit npm zu installieren: global und in einem Projekt. Die offiziell empfohlene Methode besteht darin, den TS-Compiler pro Projekt zu installieren, wodurch die langfristige Konsistenz und Reproduzierbarkeit von Projekten gewährleistet wird. Eine globale Installation des TS-Compilers könnte jedoch dennoch nützlich sein, da er dieselbe Version für den gesamten Host und seine JS-Laufzeit bereitstellt, und somit für Projekte, bei denen kein TS-Compiler lokal installiert ist. Genau so installieren RPM-Pakete, die auf Amazon Linux verfügbar sindnodejs22-typescript, z. B. nodejs20-typescript oder, einen TS-Compiler: global auf Systemebene und separat für jede unterstützte Node.js Version.

Der TSC hängt nicht direkt von einer Version ab. Node.js Der Compiler erwartet ein gewisses Maß an Laufzeitfunktionen, die in einer speziellen Datei (tsconfig.json) über Optionen wie target und lib definiert sind. Die Werte dieser Optionen stellen eine Version des ECMAScript(ES-) Standards dar, die von der JS-Laufzeitumgebung unterstützt werden kann (oder auch nicht). Verschiedene Versionen von Node.js unterstützen verschiedene Versionen des ES-Standards. Je neuer die Version von istNode.js, desto höher und vollständiger ist die unterstützte ES-Standardversion. Wenn tsconfig.json nicht im Stammverzeichnis eines Projekts vorhanden ist, werden die Standardkonfigurationsoptionen verwendet. Die Kompatibilitätstabelle mit den verschiedenen Versionen Node.js und den unterstützten Funktionen der verschiedenen ES-Standardversionen ist unter node.green verfügbar. Das tsc hat mehr als 100 verschiedene Optionen, die in der Datei tsconfig.json definiert werden können. Die Verkettung von Konfigurationen wird auch unterstützt, wenn einige Konfigurationsoptionen in einer anderen Datei definiert und dann in der Hauptdatei enthalten sind. Dieser Ansatz ermöglicht es, eine Base TS Config zu installieren, die mit einer bestimmten Version von kompatibel istNode.js, und sie dann um projektspezifische Optionen zu erweitern. Zum Glück Node.js sind die Base-TS-Konfigurationen für als Knotenmodule verfügbar, die mit npm in einem Projektordner installiert werden können. Hier ist der Quellcode der Konfiguration für Node.js Version 18, 20 und 22.

Das darauf Node.js basierende Runtime-Design hat eine gewisse Schwäche: Es unterstützt nur eine Version der Runtime auf einem Host und erfordert Reproduzierbarkeit und Konsistenz aller Abhängigkeiten auf Projektebene. Dies führte zu dem folgenden allgemeinen Nutzungsansatz TypeScript: Der TS-Compiler, die TS-Basiskonfiguration für die aktuelle Node.js Version und alle Softwareabhängigkeiten werden lokal innerhalb eines Projekts installiert. Es wird zwar erwartet, dass global installierte Knotenmodule nur CLI-Tools wie npm sind, aber tsc, das auch ein CLI-Tool ist, wird selten global installiert. Zum Glück können globale (systemweite) und lokale (innerhalb eines Projekts) Installationen von tsc problemlos nebeneinander existieren und es kann sich auch um verschiedene Versionen handeln, die unabhängig voneinander verwendet werden. Beachten Sie, dass ein lokal installiertes tsc mit dem Tool npx ausgeführt werden sollte, das zusammen mit npm installiert wird. Somit haben Benutzer selbst mit einem TS-Compiler für das System die Möglichkeit, Versionen der Komponenten der Laufzeit auszuwählen, z. B. Node.js (indem sie die aktive Version über Alternativen wechseln), einen TS-Compiler (indem sie ihn entweder lokal oder global installieren und auch die aktive Version über Alternativen wechseln), und ihn für die spezifischen Bedürfnisse zu konfigurieren.

Amazon Linux paketiert einen TS-Compiler auf die gleiche Weise wie andere global installierte Knotenmodule, wie z. B. npm, auf Basis einer Node.js Basisversion. Pakete und Binärdateien haben einen Namespace und enthalten die Hauptversion von Node.js als Teil ihrer Namen. Der standardmäßige Name der ausführbaren Datei des Compilers, tsc, wird zur Laufzeit vom Alternativ-Tool verwaltet und gibt die aktuell aktive Version an, Node.js für die er installiert wurde und von der er ausgeführt wird. Diese Auswahl hängt nicht von der aktuellen Runtime-Version ab. Node.js Es ist möglich, dass die ausführbare Node-Datei auf Node.js 20 zeigt und tsc so konfiguriert ist, dass sie von 22 interpretiert wird. Node.js Es ist auch möglich, die Namespace-Namen eines TS-Compilers, z. B. tsc- {MAJOR_VERSION}, unabhängig davon zu verwenden, wofür der Standardname tsc konfiguriert ist.

Einige nützliche Befehle zur Verwaltung der aktiven Version eines TS-Compilers
  1. Prüfen Sie, für welche Alternativen konfiguriert ist

    alternatives --list
  2. Überprüfen Sie die aktuelle Konfiguration von tsc

    alternatives --display tsc
  3. Ändern Sie interaktiv die Version tsc

    alternatives --config tsc
  4. Wechseln Sie in den manuellen Modus und wählen Sie eine bestimmte Version

    alternatives --set tsc /usr/bin/tsc-{MAJOR_VERSION}
  5. Wechseln Sie zurück zum auto Versionsauswahlmodus

    alternatives --auto tsc

Ein Beispiel für die Installation und Verwendung mehrerer Versionen von Node und eines TS-Compilers auf demselben System:

# Check the AL2023 release $ cat /etc/amazon-linux-release Amazon Linux release 2023.9.20250929 (Amazon Linux) # Install a TypeScript compiler for Node.js 20 and 22 # Node.js 20 and 22 will be installed automatically $ sudo dnf install -qy nodejs20-typescript nodejs22-typescript # Check what was installed $ rpm -q nodejs20 nodejs20-typescript nodejs22 nodejs22-typescript nodejs20-20.19.5-1.amzn2023.0.1.x86_64 nodejs20-typescript-5.9.2-1.amzn2023.0.1.noarch nodejs22-22.19.0-1.amzn2023.0.1.x86_64 nodejs22-typescript-5.9.2-1.amzn2023.0.1.noarch # Check the active version of Node.js - it is version 20 $ alternatives --display node node - status is auto. link currently points to /usr/bin/node-20 /usr/bin/node-20 - priority 100 slave npmrc: /usr/lib/nodejs20/lib/node_modules/npm/npmrc slave npm: /usr/bin/npm-20 slave npx: /usr/bin/npx-20 slave node_modules: /usr/lib/nodejs20/lib/node_modules /usr/bin/node-22 - priority 100 slave npmrc: /usr/lib/nodejs22/lib/node_modules/npm/npmrc slave npm: /usr/bin/npm-22 slave npx: /usr/bin/npx-22 slave node_modules: /usr/lib/nodejs22/lib/node_modules Current 'best' version is /usr/bin/node-20. # Check the active JS runtime version for TypeScript # Currently, the tsc compiler will be executed by Node.js 22 $ alternatives --display tsc tsc - status is auto. link currently points to /usr/bin/tsc-22 /usr/bin/tsc-22 - priority 100 slave tsserver: /usr/bin/tsserver-22 /usr/bin/tsc-20 - priority 100 slave tsserver: /usr/bin/tsserver-20 Current 'best' version is /usr/bin/tsc-22. # Check versions printed by executables $ node -v v20.19.5 $ tsc -v Version 5.9.2 # while the node is 20, tsc is executed by node 22 anyway $ head -1 /usr/bin/tsc #!/usr/bin/node-22 # However, instead of default executable names, e.g. node or tsc, # we can use namespaced names to target any installed version $ node-20 -v v20.19.5 $ node-22 -v v22.19.0 $ tsc-20 -v Version 5.9.2 $ tsc-22 -v Version 5.9.2 $ head -1 /usr/bin/tsc-20 #!/usr/bin/node-20 $ head -1 /usr/bin/tsc-22 #!/usr/bin/node-22