Menu

Apa itu TypeScript? Pengertian untuk Pemula dan Contohnya

TypeScript adalah JavaScript dengan tipe statis. Kamu memberi anotasi tipe pada nilai, compiler memeriksanya sebelum kode dijalankan, dan hasilnya adalah JavaScript biasa yang berjalan di browser mana pun atau di Node.js, Deno, dan Bun.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

TypeScript adalah JavaScript dengan tipe statis. Kamu menambahkan anotasi tipe pada variabel, parameter, dan nilai kembalian, compiler TypeScript memeriksanya sebelum program berjalan, lalu menghasilkan JavaScript biasa tanpa tipe. JavaScript itu berjalan di mana pun JavaScript berjalan: browser, Node.js, Deno, dan Bun.

Ini sebuah program TypeScript kecil. Tekan Jalankan.

Output:

Ada is 36 years old
82.33333333333333

Selain bagian setelah titik dua (: string, : User, : number[]) dan interface, ini adalah JavaScript. Tambahan itu memberi tahu compiler nilai apa saja yang boleh dimiliki setiap variabel. Perhatikan bahwa total tidak punya anotasi: TypeScript menyimpulkan sendiri bahwa nilainya number. Sebagian besar kode TypeScript memberi anotasi di batas fungsi dan membiarkan compiler menyimpulkan sisanya.

Apa yang Ditangkap Pemeriksa Tipe

Tujuan anotasi adalah agar kesalahan muncul saat kamu menulis kode, bukan saat pengguna mengalaminya. Jalankan blok ini dan baca output-nya:

Programnya tidak pernah dimulai. Compiler malah mencetak dua error:

index.ts(11,38): error TS2322: Type 'string' is not assignable to type 'number'.
index.ts(12,22): error TS2741: Property 'age' is missing in type '{ name: string; }' but required in type 'User'.

Setiap error menyebutkan file, baris dan kolom, kode error (TS2322), dan apa yang salah. Di JavaScript biasa, kedua baris itu akan berjalan, dan baris kedua akan mencetak Linus is undefined years old tanpa peringatan apa pun. Di editor seperti VS Code, error yang sama muncul sebagai garis bawah merah saat kamu mengetik, bersama autocompletion yang tahu bahwa user punya tepat sebuah name dan sebuah age.

Bug yang biasa ditangkap pemeriksa tipe:

  • Salah ketik nama property atau method (user.nmae, list.lenght).
  • Memanggil fungsi dengan argumen yang terlalu sedikit atau terlalu banyak, atau dengan tipe yang salah.
  • Memakai nilai yang mungkin null atau undefined tanpa memeriksanya dulu.
  • Lupa menangani salah satu kasus dari union seperti "loading" | "done" | "error", ketika kodenya memakai pemeriksaan kelengkapan (exhaustive check).
  • Kode yang rusak ketika fungsi yang kamu andalkan mengubah signature-nya.

Tipe Hilang Saat Runtime

Tipe TypeScript hanya ada saat kompilasi. Compiler memeriksanya lalu membuangnya: JavaScript yang dihasilkannya tidak punya anotasi maupun interface, dan berjalan persis seperti JavaScript yang kamu tulis sendiri.

Input ini:

function double(n: number): number {
    return n * 2;
}

menjadi output ini:

function double(n) {
    return n * 2;
}

Jadi TypeScript tidak bisa memeriksa nilai yang datang saat program berjalan. Di sini teks JSON mengaku sebagai User, compiler harus memercayai pengakuan itu, dan saat runtime pun tidak ada yang protes:

Output:

string
thirty-six1

Data dari luar program (response API, input form, file) perlu diperiksa saat runtime, misalnya dengan fungsi type guard yang memeriksa nilainya. Setelah itu TypeScript memercayai pemeriksaan tersebut dan mempersempit tipenya untukmu.

Siapa Pembuat TypeScript dan Kenapa

TypeScript dibuat di Microsoft, dengan Anders Hejlsberg (perancang C#) memimpin perancangannya. TypeScript dirilis ke publik pada Oktober 2012 sebagai versi 0.8, dan versi 1.0 menyusul pada April 2014. TypeScript bersifat open source dengan lisensi Apache 2.0 dan dikembangkan di GitHub. Berdasarkan hitungan kontributor bulanan GitHub, TypeScript menjadi bahasa yang paling banyak dipakai di GitHub pada Agustus 2025, di atas Python dan JavaScript.

Motivasinya adalah codebase JavaScript yang besar. JavaScript tidak punya cara untuk menyatakan "fungsi ini menerima object user", jadi mengganti nama property atau mengubah fungsi berarti mencari di seluruh codebase dan berharap test mencakup setiap pemanggil. TypeScript menambahkan informasi itu dengan cara yang tetap sepenuhnya kompatibel dengan JavaScript:

  • TypeScript adalah superset. JavaScript yang valid adalah sintaks TypeScript yang valid, jadi sebuah proyek bisa beralih satu file demi satu file.
  • TypeScript mengikuti JavaScript. Selain beberapa tambahan awal seperti enum dan namespace, TypeScript tidak menambahkan fitur runtime sendiri; sintaks baru datang dari standar JavaScript.
  • Tipe tidak memakan biaya saat runtime. Tipe dihapus, jadi output-nya secepat JavaScript yang ditulis sendiri.

Versi mayor saat ini adalah TypeScript 7, yang compiler-nya ditulis ulang dengan Go sebagai program native dan memeriksa tipe proyek besar kira-kira sepuluh kali lebih cepat daripada compiler berbasis JavaScript yang digantikannya. Halaman TypeScript 7 membahas apa saja yang berubah.

TypeScript Digunakan untuk Apa? Frontend dan Backend

TypeScript dipakai untuk software yang sama dengan JavaScript, baik di frontend maupun backend. Karena output-nya JavaScript, TypeScript bisa dipakai di mana pun JavaScript dipakai:

TempatCara TypeScript berjalan di sana
Front end di browserBuild tool (Vite, webpack, esbuild) mengompilasinya menjadi JavaScript. React, Angular, Vue, dan Svelte semuanya mendukungnya; proyek Angular memakai TypeScript secara default.
Server dan script Node.jsKompilasi dengan tsc lalu jalankan output .js-nya, atau jalankan file .ts secara langsung: Node.js versi terbaru menghapus tipenya sendiri.
DenoMenjalankan file .ts secara langsung; deno check memeriksa tipenya.
BunMenjalankan file .ts secara langsung, tanpa pemeriksaan tipe.
Desktop dan mobileElectron, React Native, dan tool sejenis menerima TypeScript.

Bahasa yang sama mencakup kedua sisi aplikasi web, dan itulah sebabnya banyak tim berbagi definisi tipe (misalnya bentuk response API) antara kode server dan kode browser.

Bagaimana Kode TypeScript Menjadi JavaScript

Ada dua pekerjaan yang terpisah, dan masing-masing dikerjakan oleh tool yang berbeda:

  1. Pemeriksaan tipe. Hanya compiler TypeScript yang melakukan ini, biasanya sebagai perintah tsc (deno check milik Deno menjalankan salinan dari compiler yang sama). Compiler membaca file .ts-mu, melaporkan error, dan secara default juga menulis file .js.
  2. Menghapus tipe. tsc bisa melakukannya, begitu juga tool yang lebih cepat yang sama sekali melewati pemeriksaan tipe: esbuild, SWC, Babel, dan fitur penghapus tipe bawaan di Node.js, Deno, dan Bun.

Pengaturan yang umum memakai tool cepat untuk menjalankan kode, dan tsc --noEmit (hanya memeriksa, tidak menulis apa pun) di editor dan di CI. Cara memasang tsc dan menjalankan file .ts masing-masing punya halamannya sendiri di bab ini.

Fitur Inti dalam Satu Contoh

TypeScript sehari-hari memakai sekumpulan kecil fitur. Blok ini memuat fitur-fitur utamanya sekaligus:

Output:

Ada ada@example.com
Ada can log in
Linus is banned
  • Anotasi tipe (name: string) menyatakan isi sebuah variabel, parameter, property, atau nilai kembalian.
  • Type inference mengisi tipe yang tidak kamu tulis: account mendapat tipenya dari apa yang dikembalikan first.
  • Interface dan type alias (interface Account, type Status) memberi nama pada bentuk datamu.
  • Union type ("active" | "banned", T | undefined) menjelaskan nilai yang berupa salah satu dari beberapa kemungkinan.
  • Narrowing: setelah pemeriksaan seperti account !== undefined, compiler tahu kasus mana yang berlaku di dalam blok itu.
  • Property opsional (email?: string) boleh tidak ada, jadi tipenya menyertakan undefined.
  • Generic (first<T>) memungkinkan satu fungsi atau tipe bekerja dengan banyak tipe sambil tetap menjaga keterkaitannya: array berisi Account masuk, sebuah Account keluar.

Apakah Perlu Belajar JavaScript Dulu?

Itu membantu, tetapi kamu bisa mempelajari keduanya sekaligus. Semua tentang perilaku kode TypeScript saat runtime (variabel, fungsi, object, array, promise, class) adalah JavaScript, dan TypeScript menambahkan lapisan yang menjelaskan nilai-nilai itu. Kalau kamu sudah tahu JavaScript, materi barunya adalah sistem tipe: anotasi, interface, union, generic, dan narrowing. Kalau kamu baru mengenal keduanya, mulailah dari dasar nilai dan fungsi JavaScript, lalu tambahkan tipe sambil jalan; pesan error compiler adalah guru yang baik, karena menunjuk tepat ke baris tempat sebuah nilai dipakai dengan cara yang salah.

Urutan praktis untuk belajar TypeScript: pasang TypeScript dan jalankan file pertamamu, pelajari tipe dasar dan object type, lalu union type dan narrowing, setelah itu fungsi dan generic. Itu sudah mencakup sebagian besar kode aplikasi.

Pertanyaan yang sering diajukan

Apa itu TypeScript dalam bahasa sederhana?

TypeScript adalah JavaScript dengan anotasi tipe. Kamu menulis let count: number = 0, lalu compiler memeriksa bahwa count hanya pernah dipakai sebagai number. Setelah itu compiler menghapus anotasinya dan menghasilkan JavaScript biasa, jadi apa pun yang bisa menjalankan JavaScript bisa menjalankan hasilnya.

Apakah TypeScript untuk frontend atau backend?

Keduanya. TypeScript dikompilasi menjadi JavaScript, jadi ia bisa dipakai di mana pun JavaScript dipakai: front end di browser (React, Angular, Vue, Svelte), server di Node.js, Deno, atau Bun, tool command line, dan aplikasi desktop yang dibuat dengan Electron. Pemeriksaan tipenya bekerja sama di semuanya.

Apakah TypeScript bahasa pemrograman atau framework?

Bahasa pemrograman. TypeScript adalah superset dari JavaScript: setiap program JavaScript adalah sintaks TypeScript yang valid, dan TypeScript menambahkan sistem tipe di atasnya. TypeScript bukan framework atau library: anotasi tipenya dihapus saat kompilasi dan tidak menambahkan kode apa pun ke programmu.

Siapa yang membuat TypeScript?

Microsoft. Anders Hejlsberg, yang juga merancang C#, memimpin perancangannya. TypeScript dirilis ke publik pada Oktober 2012 sebagai versi 0.8, dan bersifat open source dengan lisensi Apache 2.0.

Apakah TypeScript memeriksa tipe saat runtime?

Tidak. Semua pemeriksaan tipe terjadi saat kompilasi, dan tipenya dihapus dari output JavaScript. Kalau data dari luar program (response API, form, file JSON) punya bentuk yang salah, TypeScript tidak bisa menyadarinya saat program berjalan. Validasi data itu dengan kode runtime, misalnya type guard.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai