Tipe Data #
Dart adalah bahasa pemrograman yang kuat dengan sistem tipe data yang fleksibel dan aman. Memahami tipe data dalam Dart sangat penting karena ini mempengaruhi cara Anda menulis dan mengoptimalkan kode. Dart menggunakan tipe data untuk menentukan jenis nilai yang dapat disimpan dalam variabel, serta operasi yang dapat dilakukan pada nilai-nilai tersebut.
Tipe Data Primitif #
Tipe data primitif adalah tipe data dasar yang langsung disediakan oleh bahasa pemrograman. Dalam Dart, tipe data primitif mencakup:
- int: Bilangan bulat
- double: Bilangan desimal
- num: Tipe data umum untuk
int
dandouble
- bool: Nilai boolean (true/false)
- String: Kumpulan karakter (teks)
int
#
Tipe data int
digunakan untuk menyimpan bilangan bulat, baik positif maupun negatif.
Contoh:
int umur = 25;
int tinggi = -180;
Pada contoh di atas, umur
dan tinggi
adalah variabel bertipe int
.
double
#
Tipe data double
digunakan untuk menyimpan bilangan desimal (floating-point). Dart menggunakan tipe double
untuk angka-angka dengan titik desimal.
Contoh:
double berat = 70.5;
double pi = 3.14159;
Pada contoh di atas, berat
dan pi
adalah variabel bertipe double
.
num
#
Tipe data num
adalah tipe data umum yang dapat menyimpan nilai int
maupun double
. Tipe ini berguna ketika Anda tidak ingin menentukan secara spesifik apakah nilai yang disimpan akan berupa int
atau double
.
Contoh:
num a = 10; // int
num b = 20.5; // double
Pada contoh di atas, a
adalah int
dan b
adalah double
, tetapi keduanya bertipe num
.
bool
#
Tipe data bool
digunakan untuk menyimpan nilai boolean, yaitu true
atau false
. Tipe ini biasanya digunakan dalam operasi logika dan kontrol alur seperti if
, while
, dan for
.
Contoh:
bool isActive = true;
bool isComplete = false;
Pada contoh di atas, isActive
dan isComplete
adalah variabel bertipe bool
.
String
#
Tipe data String
digunakan untuk menyimpan teks. String adalah kumpulan karakter yang diapit oleh tanda kutip tunggal ('
) atau ganda ("
).
Contoh:
String nama = 'John Doe';
String pesan = "Selamat datang di Dart!";
Pada contoh di atas, nama
dan pesan
adalah variabel bertipe String
.
Tipe Data Koleksi #
Dart menyediakan beberapa tipe data koleksi untuk menyimpan kumpulan nilai. Tipe data koleksi ini mencakup:
- List: Daftar nilai (array)
- Set: Kumpulan nilai unik
- Map: Peta pasangan kunci-nilai
List
#
List
adalah tipe data yang digunakan untuk menyimpan kumpulan nilai dalam urutan tertentu. Nilai-nilai ini dapat diakses melalui indeks mereka. Dart mendukung List
yang dapat berubah (mutable) dan yang tidak dapat berubah (immutable).
Contoh:
List<int> angka = [1, 2, 3, 4, 5];
List<String> nama = ['Alice', 'Bob', 'Charlie'];
Pada contoh di atas, angka
adalah daftar bilangan bulat (int
), dan nama
adalah daftar string (String
).
Akses Elemen List
:
print(angka[0]); // Output: 1
print(nama[1]); // Output: Bob
Menambahkan Elemen:
angka.add(6);
print(angka); // Output: [1, 2, 3, 4, 5, 6]
Immutable List:
final List<int> angka = const [1, 2, 3, 4, 5];
// angka.add(6); // Akan menyebabkan error
Set
#
Set
adalah tipe data yang digunakan untuk menyimpan kumpulan nilai unik. Tidak seperti List
, Set
tidak mempertahankan urutan elemen.
Contoh:
Set<int> angka = {1, 2, 3, 4, 5};
Set<String> nama = {'Alice', 'Bob', 'Charlie'};
Pada contoh di atas, angka
adalah kumpulan bilangan bulat unik, dan nama
adalah kumpulan string unik.
Menambahkan Elemen:
angka.add(6);
angka.add(2); // Tidak akan menambahkan karena 2 sudah ada dalam set
print(angka); // Output: {1, 2, 3, 4, 5, 6}
Map
#
Map
adalah tipe data yang digunakan untuk menyimpan pasangan kunci-nilai (key-value pairs). Setiap kunci di dalam Map
harus unik, tetapi nilainya bisa duplikat.
Contoh:
Map<String, int> skor = {
'Alice': 90,
'Bob': 85,
'Charlie': 88
};
Pada contoh di atas, skor
adalah peta yang menyimpan nama (kunci) sebagai String
dan skor sebagai int
.
Akses Nilai:
print(skor['Alice']); // Output: 90
Menambahkan atau Mengubah Nilai:
skor['David'] = 92;
print(skor); // Output: {Alice: 90, Bob: 85, Charlie: 88, David: 92}
Tipe Data Khusus #
Dart juga mendukung tipe data khusus yang memberikan fungsionalitas tambahan, seperti dynamic
, var
, Object
, dan Null
.
dynamic
#
dynamic
adalah tipe data yang memungkinkan variabel berubah tipe selama waktu eksekusi. Ini memberikan fleksibilitas, tetapi juga mengurangi keamanan tipe, karena Dart tidak akan melakukan pemeriksaan tipe pada variabel yang bertipe dynamic
.
Contoh:
dynamic variabel = 42;
print(variabel); // Output: 42
variabel = 'Halo';
print(variabel); // Output: Halo
Pada contoh di atas, variabel
dapat berubah tipe dari int
ke String
karena bertipe dynamic
.
var
#
var
adalah kata kunci yang digunakan untuk mendeklarasikan variabel tanpa menentukan tipe secara eksplisit. Dart akan secara otomatis menentukan tipe variabel berdasarkan nilai awal yang diberikan.
Contoh:
var umur = 25; // Dart akan mengenali ini sebagai int
var nama = 'John'; // Dart akan mengenali ini sebagai String
Pada contoh di atas, meskipun tipe variabel tidak ditentukan secara eksplisit, Dart tetap mengenali tipe berdasarkan nilai awal.
Object
#
Object
adalah tipe dasar dari semua tipe di Dart. Setiap tipe data di Dart adalah turunan dari Object
. Ini berarti Anda bisa menyimpan nilai apa pun dalam variabel bertipe Object
.
Contoh:
Object data = 42;
print(data); // Output: 42
data = 'Halo';
print(data); // Output: Halo
Pada contoh di atas, variabel data
dapat menyimpan nilai int
dan String
karena bertipe Object
.
Null
#
Null
adalah tipe data yang hanya memiliki satu nilai, yaitu null
. Ini digunakan untuk menyatakan bahwa suatu variabel tidak memiliki nilai atau tidak terinisialisasi.
Contoh:
int? umur; // Deklarasi tipe nullable int
print(umur); // Output: null
umur = null;
print(umur); // Output: null
Pada contoh di atas, umur
adalah tipe int
yang nullable (int?
), sehingga bisa menyimpan nilai null
.
Nullable dan Non-Nullable Types #
Sejak Dart 2.12, fitur null safety diperkenalkan, yang secara default tidak mengizinkan variabel menyimpan nilai null
, kecuali jika Anda secara eksplisit mengizinkannya dengan menggunakan tanda tanya (?
).
Non-Nullable:
int umur = 25;
// umur = null; // Ini akan menyebabkan error
Nullable:
int? umur;
umur = null; // Ini diperbolehkan karena variabel umur bertipe nullable
Fitur null safety ini membantu mencegah kesalahan null reference yang umum dalam pemrograman.
Kesimpulan #
Dart menawarkan sistem tipe data yang kaya dan fleksibel, mulai dari tipe primitif seperti int
, double
, dan bool
, hingga tipe koleksi seperti List
, Set
, dan Map
. Selain itu, Dart juga mendukung tipe khusus seperti dynamic
, var
, Object
, dan Null
, yang memberikan fleksibilitas dalam penulisan kode. Memahami tipe data dan bagaimana mereka bekerja dalam Dart adalah kunci untuk menulis kode yang efisien, aman, dan mudah dipelihara. Fitur null safety yang diperkenalkan pada Dart 2.12 juga memberikan lapisan keamanan tambahan dalam penanganan nilai null
, sehingga membantu mengurangi bug dalam kode Anda.