Flutter: Dart, bahasa yang penuh kemiripan dengan Javascript
Dart adalah bahasa yang cukup unik bagi saya, bagaimana tidak, bahasa pemrograman satu ini benar-benar membuat saya berkali-kali memastikan bahwa kode program yang saya lihat ini bukanlah potongan kode Java ataupun Javascript.
Dari sanalah Saya pikir bahwa Dart adalah bahasa yang menarik, berikut ini adalah pendapat saya dimana terdapat kemiripan syntax antara Dart dengan Java ataupun Javascript
Future VS Promise
Bagi kalian yang sudah paham betul tentang adanya Promise di Javascript, konsep ini ternyata juga di adopsi oleh Dart. Meskipun tidak seluruhnya, namun bagi kalian para programmer Javascript / NodeJS mungkin akan lebih memahami konsep Future jika mengetahui kemiripan cara kerjanya dengan Promise.
Perbedaan paling mendasar ialah, Dart menggunakan keyword Future<T>
untuk setiap fungsi atau operasi yang mengembalikan Future
, sedangkan Javascript cukup mengembalikan objek Promise
pada operasinya.
Karena tentunya perbedaan mendasar dari keduanya, dimana Dart merupakan bahasa static type dimana setiap penggunaan variabel atau objek harus menyertakan tipe datanya, sedangkan Javascript merupakan bahasa yang dinamis, dimana kita tidak perlu mendeklarasikan tipe data secara kongkrit karena sudah dibantu oleh VM.
Async Await
Karena konsep promise tadi (baca: Future di dart) diadopsi, maka adanya keyword Async dan Await agaknya tidak terlalu mengagetkan ya. Pada Dart kita dapat menggunakan keyword .then
untuk menunggu proses yang dimaksud selesai, mirip seperti Promise().then()
di Javascript.
Namun kita bisa juga mengganti proses tadi dengan penggunaan async await
pada fungsi-fungsi yang mengembalikan object Future
.
Tipe Data Dynamic
Dart mempunyai satu tipe data yang cukup menarik, yaitu dynamic. Tipe data ini merupakan tipe data yang akan menyesuaikan dengan jenis data yang dibawanya, cukup menarik karena mirip seperti penggunaan any
pada Typescript.
Hal yang perlu dicatat adalah, pada Dart sendiri sudah ada keyword var
dimana hal tersebut mirip penggunaan dinamic
namun berbeda dalam implementasi serta kebutuhannya.
Sebagai contoh dibawah ini merupakan kode yang valid.
Bila potongan kode diatas dijalankan, tidak ada sesuatu yang salah. Pada baris pertama akan mencetak Kresna
dan 18.5
pada baris berikutnya.
Coba kita modifikasi kodenya menjadi seperti ini.
Yang jika dijalankan akan memunculkan error A value of type 'double' can't be assigned to a variable of type 'String'
, mengapa?
Pada contoh pertama, penetapan jenis tipe data belum ditentukan alias secara non eksplisit kita membuat tipe data nama
menjadi dynamic
, oleh karena itu program dapat berjalan.
Sedangkan pada contoh selanjutnya kita menetapkan tipe data nama
secara tidak langsung menjadi String
(karena diisi dengan 'Kresna'
), efeknya ketika di baris berikutnya diisi dengan 18.5
akan error, karena 18.5
merupakan tipe double
.
Solusinya adalah kita menggunakan keyword dynamic
tepat menggantikan keyword var
di contoh sebelumnya.
Functional with Object Oriented Support
Dart memerlukan kompilasi agar kode programnya dapat berjalan. Hal ini tentu saja berbeda dengan Javascript, namun mirip dengan C# atau Java.
Pada bahasa ini kita disuguhkan dengan dukungan untuk menggunakan fungsi yang dinamis dan OO (Object Oriented) yang cukup membantu dalam merancang struktur dan alur kode program. Sebut saja deklarasi Extend, Interface sampai tipe Generic yang bisa kita gunakan.
Bila melihat contoh kode extends diatas, beberapa hal yang perlu dicatat adalah pada pada class yang melakukan extend atau child class, tidak akan membawa fungsi constructor yang sudah dibentuk oleh parent classnya, oleh karena itu pada contoh diatas kita mendeklarasikan kembali value untuk property name
dan age
pada constructor Child
class.
Mixins
Mekanisme yang mungkin cukup unik bagi saya dalam penggunaan OOP di Dart salah satunya adalah mixins. Pada bahasa Dart, keyword with digunakan untuk memasukan property dan methods ke suatu class melalui mekanisme mixins.
Hal yang perlu diperhatikan adalah pendeklarasian mixins tidak memerlukan constructor di dalamnya dan dengan mixins kita dapat mengkombinasikan satu atau lebih mixins ke dalam suatu class, dimana hal ini tentunya sangat mempermudah komposisi pembuatan suatu class di Dart.
Menurut saya itu dulu untuk hal-hal yang menarik mengenai kesamaan Dart dengan Javascript ataupun bahasa lainnya, di lain waktu akan saya update kembali jika menemukan hal menarik lainnya tentang Dart di artikel ini.