TypeScriptnel AL2 2023 - Amazon Linux 2023

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

TypeScriptnel AL2 2023

Nota

Questo documento fornisce le informazioni essenziali sul relativo ambiente di esecuzione TypeScript basato su Node.js. Descrive inoltre un tipico flusso di lavoro di sviluppo e spiega come TypeScript è confezionato in AL2 023 per fornire un ambiente di sviluppo coerente e riproducibile.

TypeScript(TS) è un linguaggio di programmazione basato su JavaScript (JS) che offre tutte le funzionalità di JS e lo estende anche con un sistema di tipi. In uno scenario tipico, i programmi scritti in TS vengono prima tradotti nel codice JS e quindi eseguiti come qualsiasi altro normale programma JS daNode.js. Nella terminologia specifica di TS, questo processo di traduzione è chiamato «compilazione» e viene eseguito da un «compilatore», chiamato tsc. Il compilatore tsc stesso è scritto in JS, quindi per funzionare necessita anche di un ambiente di runtime JS, ad esempio. Node.js A differenza di altri ambienti di runtime JS, Node.js attualmente ha solo un supporto TS sperimentale e leggero. Un supporto TS completo, incluso il controllo dei tipi, richiede ancora l'utilizzo di pacchetti di terze parti, come il typescript. Il modo previsto per ottenere tsc (il compilatore TS) per l'ambiente di Node.js runtime consiste nell'installare il modulo del nodo typescript. Questo può essere fatto usando uno dei gestori di pacchetti, in genere npm. Esistono due modi per installare il compilatore TS usando npm: globalmente e in un progetto. Il metodo ufficialmente consigliato consiste nell'installare il compilatore TS per progetto, il che garantisce la coerenza e la riproducibilità a lungo termine dei progetti. Tuttavia, l'installazione globale del compilatore TS potrebbe comunque essere utile, perché fornisce la stessa versione per l'intero host e il relativo runtime JS, e quindi per i progetti che non hanno un compilatore TS installato localmente. Questo è esattamente il modo in cui i pacchetti RPM disponibili su Amazon Linux, come nodejs20-typescript onodejs22-typescript, installano un compilatore TS: globalmente a livello di sistema e separatamente per ogni versione supportataNode.js.

Il tsc non dipende direttamente da nessuna versione. Node.js Il compilatore si aspetta un certo livello di funzionalità di runtime, che sono definite in un file speciale (tsconfig.json) tramite opzioni come target e lib. I valori di queste opzioni rappresentano una versione dello standard ECMAScript(ES), che può (o meno) essere supportata dall'ambiente di runtime JS. Diverse versioni di Node.js supportano diverse versioni dello standard ES. Più recente è la versione diNode.js, più alta e completa è la versione standard ES supportata. Se tsconfig.json non esiste nella directory principale di un progetto, verrà utilizzato il set predefinito di opzioni di configurazione. La tabella di compatibilità con le diverse versioni Node.js e le funzionalità supportate delle varie versioni standard di ES è disponibile all'indirizzo node.green. Il tsc ha più di 100 diverse opzioni, che possono essere definite in tsconfig.json. Il concatenamento della configurazione è supportato anche quando alcune opzioni di configurazione sono definite in un altro file e quindi incluse nel file principale. Questo approccio consente di installare un Config TS di base compatibile con una determinata versione di Node.js e quindi estenderlo con opzioni specifiche del progetto. Fortunatamente, i Base TS Configs for Node.js sono disponibili come moduli di nodi che possono essere installati in una cartella di progetto utilizzando npm. Ecco il codice sorgente della configurazione per le Node.js versioni 18, 20 e 22.

La progettazione Node.js basata sul runtime presenta un certo punto debole: supporta solo una versione del runtime su un host e richiede la riproducibilità e la coerenza di tutte le dipendenze a livello di progetto. Ciò ha portato al seguente approccio comune di utilizzo TypeScript: il compilatore TS, la configurazione di base TS per la Node.js versione corrente e tutte le dipendenze software vengono installate localmente, all'interno di un progetto. Sebbene si preveda che i moduli di nodo installati a livello globale siano solo strumenti CLI, come npm, tsc, che è anche uno strumento CLI, viene installato raramente a livello globale. Fortunatamente, le installazioni globali (a livello di sistema) e locali (all'interno di un progetto) di tsc possono coesistere senza problemi e possono anche essere versioni diverse che vengono utilizzate indipendentemente. Nota che un tsc installato localmente deve essere eseguito utilizzando lo strumento npx, che viene installato insieme a npm. Pertanto, anche con un compilatore TS di sistema, gli utenti hanno la possibilità di scegliere versioni dei componenti del runtime, ad esempio Node.js (cambiando la versione attiva tramite alternative), un compilatore TS (installandolo localmente o globalmente e cambiando anche la versione attiva tramite alternative) e configurandolo per esigenze specifiche.

Amazon Linux impacchetta un compilatore TS allo stesso modo di altri moduli di nodi installati a livello globale, come npm, su una versione base per Node.js versione. I pacchetti e i file binari hanno uno spazio dei nomi e contengono la versione principale di come parte dei Node.js loro nomi. Il nome eseguibile predefinito del compilatore, tsc, è gestito in fase di esecuzione dallo strumento alternatives e indica la versione attualmente attiva Node.js per la quale è stato installato e da cui verrà eseguito. Questa selezione non dipende dalla versione di runtime corrente. Node.js È possibile avere l'eseguibile del nodo che punta a Node.js 20 e tsc configurato per essere interpretato dal 22. Node.js È anche possibile utilizzare i nomi con namespace di un compilatore TS, ad esempio tsc- {MAJOR_VERSION} indipendentemente da ciò per cui è configurato il nome tsc predefinito.

Alcuni comandi utili per gestire la versione attiva di un compilatore TS
  1. Controlla per quali alternative è configurato

    alternatives --list
  2. Controlla la configurazione attuale di tsc

    alternatives --display tsc
  3. Cambia la versione in modo interattivo tsc

    alternatives --config tsc
  4. Passa alla modalità manuale e seleziona una versione specifica

    alternatives --set tsc /usr/bin/tsc-{MAJOR_VERSION}
  5. Torna alla modalità di selezione automatica della versione

    alternatives --auto tsc

Un esempio di installazione e utilizzo di diverse versioni di Node e di un compilatore TS sullo stesso sistema:

# 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