Sekilas Typescript, Javascript Dengan Static Type

Khoironi Kurnia Syah
Sainseni
Published in
3 min readJun 20, 2023
Photo by Gabriel Heinzer on Unsplash

Programer pemula biasanya memilih bahasa pemrograman yang mudah dan sering direkomendasikan oleh teman-teman lain, salah satunya adalah Javascript.

Javascript adalah bahasa pemrograman yang menggunakan dynamic type, maksudnya adalah ketika kita membuat sebuah variabel atau fungsi kita tidak perlu mendeklarasikan tipe data apa yang akan digunakan (atau dikembalikan) pada variabel atau fungsi tersebut.

Masalah Yang Ada

Javascript biasanya menggunakan tipe any, pada saat runtime mungkin saja akan menimbulkan masalah atau error karena melakukan operasi yang tidak sesuai dengan tipe datanya, misalnya terdapat sebuah fungsi penjumlahan tetapi malah menerima argumen string yang seharusnya parameter tersebut menggunakan number, tentu saja hasil yang diharapkan menjadi tidak sesuai.

Dalam pengembangan aplikasi yang melibatkan orang lain juga akan menimbulkan kebingungan antar developer karena dokumentasi tipe data yang kurang jelas dalam penggunaan variabel atau fungsi membuat kode tersebut kurang bisa dibaca dengan baik dan juga lebih sulit untuk melakukan debugging.

Performa yang menggunakan dynamic type relatif lebih lambat daripada yang menggunakan static type karena pengecekan tipe data dilakukan pada runtime sedangkan static type melakukan pengecekan pada saat kode tersebut dicompile.

Javascript Dengan Static Type

Salah satu solusi untuk masalah tersebut adalah dengan menggunakan Typescript yang merupakan superset dari Javascript. Typescript sebenarnya adalah Javascript tetapi memiliki fitur-fitur static type yang nantinya perlu dicompile ke Javascript sebelum digunakan. Dengan adanya type yang dideklarasikan disetiap variabel atau fungsi, kode yang kita tulis tentu lebih bisa terbaca dengan baik. Typescript juga dikembangkan oleh Microsoft sehingga penggunaannya cukup terjamin dalam jangka panjang.

Tidak Perlu Belajar Dari Awal

Karena Typescript hanyalah Javascript yang diberi type ketika dideklarasikan membuat kita tidak terlalu sulit untuk beradaptasi menggunakan Typescript. Contohnya seperti kode di bawah.

Deklarasi variabel
Mendefinisikan variabel
Deklarasi fungsi
Mendefinisikan fungsi
Mendeklarasikan object
Mendefinisikan object

Generic Type

Generic type merupakan salah satu yang penggunaannya sedikit lebih advance dalam Typescript, contoh penggunaannya adalah seperti fungsi berikut yang menerima array, di mana array tersebut bisa saja memiliki tipe data elemen yang berbeda tetapi kita ingin melakukan operasi yang sama.

Mendeklarasikan fungsi dengan generic
Fungsi dengan generic type

Fungsi tersebut juga dapat digunakan dengan cara memanggilnya dengan reverse<number>(array) atau mungkin juga reverse<string>(array).

Generic type memungkinkan kita untuk membuat function dengan type yang fleksibel, jadi tidak hanya bisa menerima satu tipe data saja tetapi bisa lebih tentunya dengan batasan tertentu. Jika dilihat dari hasil di atas, variabel reversed1 akan bertipe data number[] sedangkan variabel reversed2 bertipe string[].

Conditional Generic Type

Conditional type di Typescript dapat kita lakukan dengan ternary operation seperti contoh di bawah.

Conditional

T extends ContentType merupakan generic constrain yang memberikan batasan pada tipe T. Kondisi di atas memperlihatkan jika T adalah "blog", maka tipe yang dipilih adalah BlogFrontmatter yang mewakili metadata untuk blog. Jika T adalah nilai lain selain blog, maka tipe yang dipilih adalah SnippetFrontmatter.

Type vs Interface

Type dan Interface sama-sama dapat digunakan untuk mendeklarasikan tipe data, keduanya memiliki fitur yang berbeda dan penggunaannya tergantung pada masing-masing developer tetapi Type lebih sering digunakan untuk mendeklarasikan tipe objek biasa sedangkan Interface lebih sering digunakan untuk mendeklarasikan objek sebuah Class karena fitur yang diberikan lebih sesuai dan bisa menggunakan implements jika ingin menggunakan Interface sebagai tipe dari Class tersebut.

Dynamic type memang enak dan memudahkan tetapi apa artinya itu kalau pada akhirnya banyak error saat runtime aplikasi kita. Jadi sebaiknya gunakan bahasa dengan Static type agar lebih aman dan mudah dipahami.

--

--