As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
TypeScript no AL2023
nota
Este documento fornece as informações essenciais sobre o TypeScript e seu ambiente de execução baseado em Node.js. Ele também aborda um fluxo de trabalho de desenvolvimento típico e explica como o TypeScript é empacotado no AL2023 para oferecer um ambiente de desenvolvimento consistente e reproduzível.
TypeScriptnodejs20-typescript ou nodejs22-typescript, instalam um compilador do TS: globalmente no nível do sistema e separadamente para cada versão do Node.js compatível.
O tsc não depende diretamente de nenhuma versão do Node.js. O compilador espera determinado nível de recursos de runtime, que são definidos em um arquivo especial (tsconfig.json) por meio de opções como target
O design de runtime baseado em Node.js tem certa fraqueza: ele só oferece suporte a uma versão do runtime em um host e requer reprodutibilidade e consistência de todas as dependências no nível do projeto. Isso levou à seguinte abordagem comum de uso do TypeScript: a instalação local, dentro de um projeto, do compilador do TS, da configuração básica do TS para a versão do Node.js atual e de todas as dependências de software. Embora se espere que os módulos de nós instalados globalmente sejam apenas ferramentas de CLI, como npm, o tsc, que também é uma ferramenta de CLI, raramente é instalado globalmente. Felizmente, as instalações globais (em todo o sistema) e locais (dentro de um projeto) do tsc podem coexistir sem problemas e também podem ser versões diferentes que são usadas de forma independente. Observe que um tsc instalado localmente deve ser executado usando a ferramenta npx, que é instalada com o npm. Assim, mesmo com um compilador do TS do sistema, os usuários têm a oportunidade de escolher versões dos componentes do runtime, como Node.js (alternando a versão ativa por meio da ferramenta alternatives), um compilador do TS (instalando-o local ou globalmente, e também alternando a versão ativa por meio da ferramenta alternatives), e configurar para as necessidades específicas.
O Amazon Linux empacota um compilador do TS da mesma forma que outros módulos de nós instalados globalmente, como npm, com base na versão do Node.js. Pacotes e binários têm namespace e contêm a versão principal do Node.js como parte de seus nomes. O nome do executável padrão do compilador, tsc, é gerenciado no runtime pela ferramenta alternatives e aponta para a versão atualmente ativa do Node.js para a qual ele foi instalado e será executado. Essa seleção não depende da versão atual do runtime do Node.js. É possível ter o executável node apontando para o Node.js 20 e o tsc configurado para ser interpretado pelo Node.js 22. Também é possível usar os nomes com namespace de um compilador do TS, por exemplo, tsc-{MAJOR_VERSION}, independentemente do nome tsc padrão configurado.
Comandos úteis para gerenciar a versão ativa de um compilador do TS
-
Verifique para que alternatives está configurada.
alternatives --list -
Verifique a configuração atual do tsc.
alternatives --display tsc -
Altere a versão do tsc de forma interativa.
alternatives --config tsc -
Mude para o modo manual e selecione uma versão específica.
alternatives --set tsc /usr/bin/tsc-{MAJOR_VERSION} -
Volte para o modo de seleção automática de versão.
alternatives --auto tsc
Um exemplo de instalação e uso de várias versões do Node e de um compilador do TS no mesmo 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