TypeScriptdi AL2 023 - Amazon Linux 2023

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

TypeScriptdi AL2 023

catatan

Dokumen ini memberikan informasi penting tentang TypeScript dan lingkungan eksekusi berbasis Node.js. Ini juga mencakup alur kerja pengembangan yang khas dan menjelaskan bagaimana TypeScript dikemas dalam AL2 023 untuk memberikan lingkungan pengembangan yang konsisten dan dapat direproduksi.

TypeScript(TS) adalah bahasa pemrograman berdasarkan JavaScript (JS) yang menawarkan semua fitur JS, dan juga memperluasnya dengan sistem tipe. Dalam skenario tipikal, program yang ditulis dalam TS diterjemahkan ke dalam kode JS terlebih dahulu, dan kemudian dijalankan sebagai program JS biasa lainnya olehNode.js. Dalam terminologi khusus TS, proses penerjemahan ini disebut “kompilasi” dan dilakukan oleh “kompiler”, yang disebut tsc. Kompiler tsc itu sendiri ditulis dalam JS, sehingga untuk menjalankannya, ia juga membutuhkan lingkungan runtime JS, seperti. Node.js Tidak seperti beberapa lingkungan runtime JS lainnya, Node.js saat ini hanya memiliki dukungan TS eksperimental dan ringan. Dukungan TS penuh, termasuk pemeriksaan tipe, masih memerlukan penggunaan paket pihak ketiga, seperti TypeScript. Cara yang diharapkan untuk mendapatkan tsc (kompiler TS) untuk lingkungan Node.js runtime adalah dengan menginstal modul node TypeScript. Ini dapat dilakukan dengan menggunakan salah satu manajer paket, biasanya npm. Ada dua cara untuk menginstal kompiler TS menggunakan npm: secara global dan dalam proyek. Metode yang direkomendasikan secara resmi adalah menginstal kompiler TS berdasarkan per proyek, yang memastikan konsistensi dan reproduktifitas jangka panjang untuk proyek. Namun, menginstal kompiler TS secara global mungkin masih berguna, karena menyediakan versi yang sama untuk seluruh host dan runtime JS-nya, dan dengan demikian untuk proyek yang tidak menginstal kompiler TS secara lokal. Inilah tepatnya bagaimana paket RPM tersedia di Amazon Linux, seperti nodejs20-typescript ataunodejs22-typescript, menginstal kompiler TS: secara global di tingkat sistem, dan secara terpisah untuk setiap Node.js versi yang didukung.

Tsc tidak secara langsung bergantung pada Node.js versi apa pun. Kompiler mengharapkan tingkat tertentu dari fitur runtime, yang didefinisikan dalam file khusus (tsconfig.json) melalui opsi seperti target dan lib. Nilai opsi ini mewakili versi standar ECMAScript(ES), yang mungkin (atau mungkin tidak) didukung oleh lingkungan runtime JS. Versi yang berbeda Node.js mendukung versi standar ES yang berbeda. Semakin baru versiNode.js, semakin tinggi dan lebih lengkap versi standar ES yang didukung. Jika tsconfig.json tidak ada di direktori root proyek, maka set default opsi konfigurasi akan digunakan. Tabel kompatibilitas dengan versi yang berbeda Node.js dan fitur yang didukung dari berbagai versi standar ES tersedia di node.green. Tsc memiliki lebih dari 100 opsi berbeda, yang dapat didefinisikan di tsconfig.json. Rangkaian konfigurasi juga didukung, ketika beberapa opsi konfigurasi didefinisikan dalam file lain dan kemudian disertakan dalam file utama. Pendekatan ini memungkinkan seseorang untuk menginstal Base TS Config yang kompatibel dengan versi tertentuNode.js, dan kemudian memperluasnya dengan opsi khusus proyek. Untungnya, Base TS Configs for Node.js tersedia sebagai modul node yang dapat diinstal di folder proyek menggunakan npm. Berikut adalah kode sumber konfigurasi untuk Node.js versi 18, 20, dan 22.

Desain runtime Node.js berbasis memiliki kelemahan tertentu: hanya mendukung satu versi runtime pada host, dan membutuhkan reproduktifitas dan konsistensi semua dependensi di tingkat proyek. Hal ini menyebabkan pendekatan umum berikut untuk menggunakan TypeScript: kompiler TS, konfigurasi dasar TS untuk Node.js versi saat ini, dan semua dependensi perangkat lunak diinstal secara lokal, di dalam proyek. Meskipun modul node yang diinstal secara global diharapkan menjadi alat CLI saja, seperti npm, tsc, yang juga merupakan alat CLI, jarang diinstal secara global. Untungnya, instalasi global (luas sistem) dan lokal (dalam proyek) tsc dapat hidup berdampingan tanpa masalah dan juga dapat berupa versi berbeda yang digunakan secara independen. Perhatikan bahwa tsc yang diinstal secara lokal harus dijalankan menggunakan alat npx, yang diinstal bersama dengan npm. Jadi, bahkan dengan kompiler TS sistem, pengguna memiliki kesempatan untuk memilih versi komponen runtime, seperti Node.js (dengan mengganti versi aktif melalui alternatif), kompiler TS (dengan menginstalnya secara lokal, atau, secara global dan juga beralih versi aktif melalui alternatif), dan mengonfigurasinya untuk kebutuhan spesifik.

Amazon Linux mengemas kompiler TS dengan cara yang sama seperti modul node yang diinstal secara global lainnya, seperti npm, pada dasar per Node.js versi. Paket dan binari diberi namespace dan berisi versi utama Node.js sebagai bagian dari nama mereka. Nama default yang dapat dieksekusi dari kompiler, tsc, dikelola saat runtime oleh alat alternatif dan arahkan versi aktif saat ini yang telah Node.js di-insatalled dan akan dieksekusi oleh. Pilihan ini tidak bergantung pada versi Node.js runtime saat ini. Dimungkinkan untuk memiliki node yang dapat dieksekusi menunjuk ke Node.js 20 dan tsc dikonfigurasi untuk ditafsirkan oleh 22. Node.js Dimungkinkan juga untuk menggunakan nama namespace dari kompiler TS, misalnya tsc- {MAJOR_VERSION} secara independen untuk apa nama tsc default dikonfigurasi.

Beberapa perintah yang berguna untuk mengelola versi aktif kompiler TS
  1. Periksa alternatif apa yang dikonfigurasi

    alternatives --list
  2. Periksa konfigurasi tsc saat ini

    alternatives --display tsc
  3. Ubah versi secara interaktif tsc

    alternatives --config tsc
  4. Beralih ke mode manual dan pilih versi tertentu

    alternatives --set tsc /usr/bin/tsc-{MAJOR_VERSION}
  5. Beralih kembali ke mode pemilihan versi auto

    alternatives --auto tsc

Contoh menginstal dan menggunakan beberapa versi Node dan kompiler TS pada sistem yang sama:

# 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