Cara Setup Project TypeScript dengan Node.js
Pendahuluan
Bayangkan kamu sedang membangun sebuah rumah. Jika menggunakan JavaScript b[1D[K biasa, kamu membangun tanpa cetak biru — langsung pasang bata, dan baru tah[3D[K tahu ada masalah ketika temboknya sudah setengah jadi. Dengan TypeScript, k[1D[K kamu punya cetak biru lengkap sejak awal: tahu persis berapa banyak bata ya[2D[K yang dibutuhkan, di mana letaknya, dan apa yang akan terjadi jika ada yang [K tidak sesuai.
TypeScript adalah superset dari JavaScript yang menambahkan sistem tipe sta[3D[K statis. Artinya, kesalahan bisa terdeteksi saat kamu menulis kode — bukan s[1D[K saat aplikasi sudah berjalan di hadapan pengguna. Ini sangat berguna jika k[1D[K kamu ingin membangun aplikasi backend yang robust menggunakan Node.js.
Dalam artikel ini, kamu akan belajar cara menyiapkan project TypeScript den[3D[K dengan Node.js dari nol. Tidak perlu pengalaman sebelumnya dengan TypeScrip[9D[K TypeScript — kita akan mulai dari langkah paling dasar. Sebelum melanjutkan[11D[K melanjutkan, pastikan kamu sudah familiar dengan konsep dasar JavaScript da[2D[K dan cara kerja terminal/command line.
Konsep Dasar
Sebelum terjun langsung ke kode, ada beberapa konsep penting yang perlu kam[3D[K kamu pahami.
Mengapa TypeScript di Node.js?
Node.js secara default menggunakan JavaScript. Namun, semakin besar sebuah [K project, semakin sulit untuk melacak tipe data dari setiap variabel dan fun[3D[K fungsi. TypeScript hadir untuk menyelesaikan masalah ini.
Bayangkan kamu sedang membangun layanan backend seperti yang ada di balik a[1D[K
aplikasi Tokopedia — ratusan endpoint API, ribuan baris kode, dan puluhan d[1D[K
developer yang bekerja bersama. Tanpa TypeScript, sangat mudah terjadi kesa[4D[K
kesalahan kecil seperti mengirim string padahal fungsi mengharapkan numb[5D[K number`. TypeScript akan langsung memberi tahu kamu sebelum kode dijalanka[9D[K
dijalankan.
Alur Kerja TypeScript di Node.js
Node.js tidak bisa langsung menjalankan file TypeScript (.ts). Kamu p[1D[K
perlu melakukan langkah kompilasi terlebih dahulu:
File .ts → Kompilasi (tsc) → File .js → Dijalankan Node.js
Ada juga tools seperti ts-node yang memungkinkan kamu menjalankan TypeScr[7D[K
TypeScript secara langsung tanpa langkah kompilasi manual — sangat berguna [K
saat pengembangan.
Perangkat yang Dibutuhkan
Sebelum mulai, pastikan kamu sudah menginstal:
- Node.js (versi 18 ke atas direkomendasikan) — bisa diunduh di nodejs[6D[K nodejs.org
- npm — biasanya sudah terinstal bersama Node.js
- Editor kode — VS Code sangat direkomendasikan karena dukungan TypeSc[6D[K TypeScript-nya yang luar biasa
Cek apakah Node.js sudah terinstal:
# Cek versi Node.js yang terpasang
node --version
# Cek versi npm yang terpasang
npm --version
# Output yang diharapkan:
# > v20.11.1
# > 10.2.4
Jika keduanya menampilkan nomor versi, berarti siap untuk melanjutkan!
Contoh Kode
Mari kita mulai membangun project TypeScript dengan Node.js langkah demi la[2D[K langkah.
Langkah 1: Buat Folder Project
# Membuat folder baru untuk proyek TypeScript
mkdir project-typescript-nodejs
# Masuk ke folder proyek yang baru dibuat
cd project-typescript-nodejs
# Menampilkan lokasi folder proyek saat ini
pwd
# Output yang diharapkan:
# > /path/ke/project-typescript-nodejs
Langkah 2: Inisialisasi Project Node.js
# Buat file package.json dengan pengaturan default
npm init -y > /dev/null
# Pasang TypeScript sebagai dependency untuk pengembangan
npm install typescript --save-dev > /dev/null
# Buat file TypeScript sederhana
echo 'const pesan: string = "Halo, TypeScript!"; console.log(pesan);' > hel[3D[K
hello.ts
# Compile TypeScript menjadi JavaScript
npx tsc hello.ts
# Jalankan hasil compile dengan Node.js
node hello.js
# Output yang diharapkan:
# > Halo, TypeScript!
Perintah ini akan membuat file package.json secara otomatis. File ini ada[3D[K
adalah “identitas” project kamu — berisi nama project, versi, dan daftar de[2D[K
dependensi.
Langkah 3: Install TypeScript
# Instal TypeScript dan tipe bawaan Node.js sebagai dependency development
npm install --save-dev typescript @types/node
# Cek versi TypeScript untuk memastikan instalasi berhasil
npx tsc --version
# Output yang diharapkan:
# > added ... packages
# > Version ...
Penjelasan:
typescript— compiler TypeScript itu sendiri@types/node— definisi tipe untuk built-in module Node.js (sepertifs[4D[Kfs,path,http, dll.)--save-dev— berarti package ini hanya dibutuhkan saat pengembangan, bu[2D[K bukan saat produksi
Langkah 4: Buat File Konfigurasi TypeScript
TypeScript membutuhkan file konfigurasi bernama tsconfig.json. Kamu bisa [K
membuatnya secara otomatis:
# Buat file konfigurasi TypeScript bernama tsconfig.json
npx tsc --init
# Output yang diharapkan:
# > Wrote to .../package.json
# > Created a new tsconfig.json
Setelah perintah ini dijalankan, akan muncul file tsconfig.json dengan ba[2D[K
banyak opsi (sebagian besar di-comment). Untuk project Node.js pemula, guna[4D[K
gunakan konfigurasi yang lebih sederhana seperti ini. Hapus isi file terseb[6D[K
tersebut dan ganti dengan:
{
"# komentar": "Konfigurasi dasar TypeScript untuk proyek pemula.",
"compilerOptions": {
"# target": "Mengubah TypeScript menjadi JavaScript versi ES2020.",
"target": "ES2020",
"# module": "Menggunakan sistem module CommonJS, cocok untuk Node.js.",[10D[K
Node.js.",
"module": "commonjs",
"# lib": "Menyediakan fitur bawaan JavaScript ES2020.",
"lib": ["ES2020"],
"# rootDir": "Folder tempat file TypeScript ditulis.",
"rootDir": "./src",
"# outDir": "Folder hasil kompilasi JavaScript.",
"outDir": "./dist",
"# strict": "Mengaktifkan pengecekan tipe yang lebih ketat.",
"strict": true,
"# esModuleInterop": "Memudahkan import package CommonJS.",
"esModuleInterop": true,
"# skipLibCheck": "Melewati pengecekan tipe pada file library agar komp[4D[K
kompilasi lebih cepat.",
"skipLibCheck": true,
"# forceConsistentCasingInFileNames": "Mencegah masalah perbedaan huruf[5D[K
huruf besar/kecil pada nama file.",
"forceConsistentCasingInFileNames": true
},
"# include": "File TypeScript yang akan dikompilasi.",
"include": ["src/**/*"],
"# exclude": "Folder yang tidak perlu dikompilasi.",
"exclude": ["node_modules", "dist"],
"# Output yang diharapkan:": "",
"# > npx tsc": "",
"# > File JavaScript berhasil dibuat di folder dist": ""
}
Penjelasan setiap opsi penting:
| Opsi | Penjelasan |
|---|---|
target | Versi JavaScript yang dihasilkan setelah kompilasi |
module | Sistem modul yang digunakan (commonjs untuk Node.js) |
outDir | Folder output file JavaScript hasil kompilasi |
rootDir | Folder sumber file TypeScript kamu |
strict | Mengaktifkan semua pemeriksaan tipe yang ketat |
Untuk penjelasan lebih dalam tentang setiap opsi di tsconfig.json, kamu b[1D[K
bisa membaca [Tutorial Konfigurasi tsconfig.json untuk Pemula](/docs/sw/typ[20DK
PemulaPemula](/docs/sw/typscript/tutorial-konfigurasi-tsconfigjson-untuk-pemula) yang membahas topik ini secara lebih detail.
Langkah 5: Buat Struktur Folder
# Membuat folder bernama src untuk menyimpan file TypeScript
mkdir -p src
# Menampilkan pesan bahwa folder berhasil dibuat
echo "Folder src berhasil dibuat"
# Output yang diharapkan:
# > Folder src berhasil dibuat
Struktur project kamu sekarang akan terlihat seperti ini:
project-typescript-nodejs/
├── src/ ← file TypeScript kamu di sini
├── node_modules/
├── package.json
└── tsconfig.json
Langkah 6: Tulis Kode TypeScript Pertama
Buat file src/index.ts:
// src/index.ts
// Membuat bentuk data pengguna dengan interface
interface Pengguna {
id: number;
nama: string;
email: string;
aktif: boolean;
}
// Fungsi menerima data bertipe Pengguna dan mengembalikan string
function sambut(pengguna: Pengguna): string {
// Jika akun tidak aktif, tampilkan pesan khusus
if (!pengguna.aktif) {
return `Akun ${pengguna.nama} tidak aktif.`;
}
return `Halo, ${pengguna.nama}! Selamat datang di KamusNgoding.`;
}
// Data contoh dengan tipe Pengguna
const pengguna: Pengguna = {
id: 1,
nama: "Budi Santoso",
email: "[email protected]",
aktif: true,
};
// Memanggil fungsi dan menyimpan hasilnya
const pesan = sambut(pengguna);
console.log(pesan);
// Array yang hanya boleh berisi data bertipe Pengguna
const daftarPengguna: Pengguna[] = [
{ id: 1, nama: "Budi", email: "[email protected]", aktif: true },
{ id: 2, nama: "Siti", email: "[email protected]", aktif: false },
{ id: 3, nama: "Andi", email: "[email protected]", aktif: true },
];
// Mengambil hanya pengguna yang aktif
const penggunaAktif = daftarPengguna.filter((p) => p.aktif);
console.log(`Pengguna aktif: ${penggunaAktif.length} orang`);
/*
# Output yang diharapkan:
# > Halo, Budi Santoso! Selamat datang di KamusNgoding.
# > Pengguna aktif: 2 orang
*/
Langkah 7: Tambahkan Script di package.json
Buka package.json dan tambahkan script berikut:
{
"# nama_paket": "Nama project Node.js + TypeScript",
"name": "project-typescript-nodejs",
"version": "1.0.0",
"main": "dist/index.js",
"scripts": {
"# build": "Mengubah file TypeScript di folder src menjadi JavaScript d[1D[K
di folder dist",
"build": "tsc",
"# start": "Menjalankan hasil build dari folder dist",
"start": "node dist/index.js",
"# dev": "Menjalankan TypeScript langsung saat belajar",
"dev": "ts-node src/index.ts"
},
"devDependencies": {
"# types_node": "Menambahkan tipe bawaan Node.js untuk TypeScript",
"@types/node": "^22.0.0",
"# ts_node": "Menjalankan file TypeScript tanpa build manual",
"ts-node": "^10.9.2",
"# typescript": "Compiler utama untuk TypeScript",
"typescript": "^5.0.0"
},
"# Output yang diharapkan:": "",
"# > npm run dev": "",
"# > Hello, TypeScript!": ""
}
Langkah 8: Install ts-node untuk Development
ts-node memungkinkan kamu menjalankan file TypeScript langsung tanpa komp[4D[K
kompilasi manual — sangat menghemat waktu saat pengembangan:
# Pasang TypeScript dan ts-node sebagai development dependency
npm install --save-dev typescript ts-node >/dev/null 2>&1
# Cek apakah ts-node berhasil terpasang
node -e "require('ts-node'); console.log('ts-node siap digunakan')"
# Output yang diharapkan:
# > ts-node siap digunakan
Langkah 9: Jalankan Project
Untuk development (langsung jalankan TypeScript):
# Jalankan server pengembangan untuk proyek TypeScript
npm run dev
# Output yang diharapkan:
# > Server berjalan di http://localhost:5173
# > Siap menerima perubahan kode
Output yang diharapkan:
Halo, Budi Santoso! Selamat datang di KamusNgoding.
Pengguna aktif: 2 orang
Untuk production (kompilasi dulu, lalu jalankan JavaScript):
# Buat project TypeScript sederhana
mkdir belajar-typescript && cd belajar-typescript
# Inisialisasi project Node.js
npm init -y --silent
# Install TypeScript sebagai dependency development
npm install typescript --save-dev --silent
# Buat folder untuk kode TypeScript
mkdir src
# Buat file TypeScript utama
cat > src/index.ts <<'EOF'
const nama: string = "TypeScript";
console.log(`Halo, ${nama}!`);
console.log("Selamat datang di KamusNgoding!");
EOF
# Compile TypeScript menjadi JavaScript
npx tsc
# Jalankan hasil compile dengan Node.js
node dist/index.js
# Output yang diharapkan:
# > Halo, TypeScript!
# > Selamat datang di KamusNgoding!
Pertanyaan yang Sering Diajukan
Apa perbedaan antara npm install dan npm install --save-dev?
npm install digunakan untuk dependensi yang dibutuhkan saat aplikasi berj[4D[K
berjalan di production (seperti express atau axios). Sedangkan npm ins[3D[K install --save-dev untuk dependensi yang hanya dibutuhkan saat pengembanga[11D[K
pengembangan, seperti typescript dan ts-node. Saat deploy ke server, ka[2D[K
kamu bisa menjalankan npm install --production untuk melewati instalasi d[1D[K
dependensi development dan menghemat ruang disk.
Mengapa saya perlu @types/node?
Node.js ditulis dalam JavaScript, sehingga tidak memiliki informasi tipe ba[2D[K
bawaan untuk TypeScript. Package @types/node berisi file definisi tipe ([2D[K (.d.ts) yang memberi tahu TypeScript tentang tipe dari semua fungsi dan o[1D[K objek built-in Node.js, seperti http.IncomingMessage, fs.readFile`, dan [K
sebagainya. Tanpa ini, TypeScript tidak akan “mengenali” API milik Node.js.[8D[K
Node.js.
Apakah saya harus selalu menggunakan ts-node saat development?
Tidak harus, tapi sangat direkomendasikan karena lebih praktis. Alternatif [K
lain adalah menggunakan mode --watch dari TypeScript compiler: npx tsc -[1D[K --watch. Ini akan mengkompilasi otomatis setiap kali ada perubahan file, t[1D[K
tapi kamu tetap perlu menjalankan node dist/index.js secara terpisah. Ban[3D[K
Banyak developer juga menggunakan nodemon bersama ts-node agar server o[1D[K
otomatis restart saat file berubah.
Apa itu strict: true di tsconfig.json dan apakah harus diaktifkan?
strict: true mengaktifkan sekelompok pemeriksaan tipe yang lebih ketat, t[1D[K
termasuk strictNullChecks (mencegah bug akibat null atau undefined) d[1D[K
dan noImplicitAny (memaksa kamu mendefinisikan tipe secara eksplisit). Un[2D[K
Untuk project baru, sangat direkomendasikan mengaktifkan ini sejak awal kar[3D[K
karena jauh lebih mudah daripada mengaktifkannya di tengah project yang sud[3D[K
sudah besar.
Bisakah saya menggunakan TypeScript dengan framework seperti Express?
Tentu saja! Kamu hanya perlu menambahkan tipe untuk Express: npm install e[1D[K express lalu npm install --save-dev @types/express. Setelah itu kamu bis[3D[K
bisa langsung menulis kode Express dengan dukungan TypeScript penuh, termas[6D[K
termasuk autocomplete dan pengecekan tipe untuk request dan response object[6D[K
object.
Kesimpulan
Kamu telah berhasil menyiapkan project TypeScript dengan Node.js dari nol! [K Berikut ringkasan langkah-langkah yang sudah kita pelajari:
- Inisialisasi project dengan
npm init -y - Install TypeScript dan
@types/nodesebagai devDependencies - Buat
tsconfig.jsondengan konfigurasi yang sesuai untuk Node.js - Atur struktur folder dengan memisahkan source (
src/) dan output ([2D[K (dist/`) - Install
ts-nodeuntuk kemudahan development - Tulis kode TypeScript dengan tipe yang jelas dan aman
- Jalankan project menggunakan
npm run devatau build terlebih dahul[5D[K dahulu
Dengan fondasi ini, kamu sudah siap untuk membangun aplikasi Node.js yang l[1D[K lebih besar dan lebih mudah dipelihara. Langkah selanjutnya yang bisa kamu [K eksplorasi adalah menambahkan framework seperti Express, menggunakan databa[6D[K database, atau mempelajari fitur TypeScript yang lebih canggih.
Selamat belajar dan terus berlatih! Kamu sudah mengambil langkah yang tepat[5D[K tepat dengan belajar TypeScript sejak awal — investasi ini akan sangat terb[4D[K terbayar saat project kamu semakin besar. Jika ada pertanyaan, jangan ragu [K untuk eksplorasi artikel-artikel lainnya di KamusNgoding!