Tipe Primitif

Tipe string, number, boolean, null, undefined, bigint, dan symbol beserta aturan pemakaiannya.

Daftar isi

TypeScript mewarisi tujuh tipe primitif (primitive) dari JavaScript, yaitu string, number, boolean, null, undefined, bigint, dan symbol. Tipe primitif adalah tipe paling dasar yang tidak dapat dipecah menjadi struktur lain. Topik ini membahas kegunaan masing-masing tipe, aturan penulisannya, serta perilaku yang sering dipahami secara keliru.

Tipe harian: string, number, dan boolean#

Tiga tipe pertama mencakup sebagian besar kebutuhan sehari-hari. Tipe string menyimpan teks, tipe number menyimpan bilangan bulat maupun pecahan dalam satu tipe yang sama, dan tipe boolean hanya memiliki dua nilai, yaitu true dan false. Ketiganya ditulis dengan huruf kecil, karena bentuk kapital seperti String merujuk pada tipe pembungkus yang berbeda dan tidak disarankan.

Berkas berikut menyimpan data sebuah catatan belanja pribadi dengan ketiga tipe tersebut.

ts primitif-harian.ts
const judulCatatan: string = "Daftar belanja pribadi";
const jumlahItem: number = 7;
const sudahDitandai: boolean = false;

console.log(judulCatatan);
console.log(jumlahItem);
console.log(sudahDitandai);
text Keluaran
Daftar belanja pribadi
7
false

Setiap nilai ditulis dengan anotasi eksplisit agar tipe yang diharapkan terbaca langsung dari deklarasinya. Apabila salah satu nilai kelak diganti dengan nilai bertipe lain, compiler langsung melaporkan baris yang perlu diperiksa. Pola ini lazim untuk data kecil yang nilai awalnya sudah diketahui sejak deklarasi.

null dan undefined#

Nilai undefined muncul ketika sebuah variabel belum diberi nilai apa pun, sedangkan null adalah nilai yang sengaja ditugaskan untuk menyatakan ketiadaan. Keduanya sekaligus berperan sebagai tipe, dengan masing-masing hanya memiliki satu anggota. Pada pengaturan pemeriksaan yang ketat, keduanya tidak dapat ditugaskan ke variabel bertipe lain, sehingga kemungkinan munculnya harus dinyatakan melalui gabungan tipe (union) seperti string | null.

Berkas berikut memodelkan hasil pencarian yang belum tentu ditemukan dan nomor urut yang belum tentu tersedia.

ts ketiadaan.ts
let hasilPencarian: string | null = null;
let urutanBerikutnya: number | undefined = undefined;

console.log(hasilPencarian);
console.log(urutanBerikutnya);

hasilPencarian = "Catatan bulan Maret";
urutanBerikutnya = 3;

console.log(hasilPencarian);
console.log(urutanBerikutnya);
text Keluaran
null
undefined
Catatan bulan Maret
3

Variabel hasilPencarian bernilai null pada awalnya, lalu diberi teks setelah data ditemukan. Pola ini lazim untuk hasil pencarian yang keberadaannya memang belum pasti. Tanda pipa | pada anotasinya menyatakan nilai boleh berupa salah satu dari dua tipe itu, dan pemeriksaan atas keduanya diperlukan sebelum nilai dipakai.

bigint dan symbol#

Tipe bigint menyimpan bilangan bulat di luar jangkauan aman number, yang berhenti pada 2 pangkat 53 dikurangi 1. Nilai bigint ditulis dengan akhiran n pada angkanya dan tidak dapat dicampur langsung dengan number dalam satu operasi aritmetika. Tipe symbol menghasilkan pengenal yang selalu unik, sehingga dua pemanggilan Symbol dengan argumen sama tetap menghasilkan nilai yang berbeda.

Berkas berikut memakai kedua tipe tersebut dan menampilkan nilai beserta tipenya.

ts bigint-symbol.ts
const nilaiBesar: bigint = 9007199254740993n;
const kunci: symbol = Symbol("penghitung");

console.log(nilaiBesar);
console.log(`${nilaiBesar}`);
console.log(typeof nilaiBesar);
console.log(typeof kunci);
console.log(kunci.description);
text Keluaran
9007199254740993n
9007199254740993
bigint
symbol
penghitung

Keluaran di atas menunjukkan perbedaan dua bentuk tampilan. console.log mencetak nilai bigint dengan akhiran n, sedangkan template literal memanggil toString sehingga akhirannya hilang. Properti description pada symbol mengembalikan teks yang diberikan saat pembuatannya dan berguna sebagai label ketika nilai symbol perlu dilaporkan.

Tabel ringkas dan bentuk penulisan#

Tabel berikut merangkum ketujuh tipe primitif beserta contoh nilainya.

TipeMenyimpanContoh nilai
stringteks"catatan"
numberbilangan bulat dan pecahan27.5
booleankebenaran logistrue
nullketiadaan yang sengaja dinyatakannull
undefinednilai yang belum adaundefined
bigintbilangan bulat besar9007199254740993n
symbolpengenal unikSymbol("id")

Nama semua tipe primitif ditulis dengan huruf kecil. Bentuk kapital String, Number, dan Boolean adalah tipe pembungkus (wrapper object) yang wujudnya objek, bukan primitif. Penugasan objek pembungkus ke variabel primitif ditolak compiler, sebagaimana ditunjukkan berkas berikut.

ts huruf-kapital.ts
// tidak-dijalankan
const nama: string = new String("Budi");
bash
# menampilkan pesan error tanpa mengeksekusi berkas
tsc --noEmit huruf-kapital.ts
text Keluaran
huruf-kapital.ts(2,7): error TS2322: Type 'String' is not assignable to type 'string'.
  'string' is a primitive, but 'String' is a wrapper object. Prefer using 'string' when possible.

Baris kedua pesan di atas adalah catatan tambahan dari compiler yang langsung menunjukkan perbaikannya. Aturan yang sama berlaku untuk Number dan Boolean, sehingga bentuk kapital hanya muncul pada konteks khusus seperti berurusan dengan pustaka lama. Untuk kode harian, bentuk huruf kecil adalah satu-satunya yang perlu ditulis.

Kesalahan umum#

Kesalahan berikut paling sering muncul ketika tipe primitif dipraktikkan.

  • Mencampur bigint dengan number dalam satu operasi. Ekspresi 1n + 1 ditolak compiler karena kedua tipe tidak saling cocok. Konversi salah satu sisi terlebih dahulu, misalnya dengan Number(nilaiBesar) bila nilainya masih dalam jangkauan aman.
  • Mengira number terpisah menjadi tipe bilangan bulat dan tipe pecahan. Tipe number menampung keduanya, sehingga 42 dan 4.2 bertipe sama. Pembagian seperti 7 / 2 menghasilkan 3.5 tanpa pembulatan otomatis.
  • Memakai null dan undefined bergantian dengan arti yang sama. Keduanya memiliki makna berbeda, yaitu ketiadaan yang sengaja dinyatakan dan ketiadaan karena belum diisi. Memilih satu konvensi sejak awal membuat kode lebih mudah dibaca.

Ringkasan#

  • Tujuh tipe primitif TypeScript adalah string, number, boolean, null, undefined, bigint, dan symbol, dan semuanya ditulis dengan huruf kecil.
  • null menyatakan ketiadaan yang sengaja dinyatakan, sedangkan undefined menyatakan nilai yang belum ada, dan keduanya dinyatakan melalui union bila boleh muncul.
  • bigint menampung bilangan bulat di luar jangkauan aman number dengan akhiran n, sedangkan symbol menghasilkan pengenal yang selalu unik.
  • Bentuk kapital String, Number, dan Boolean adalah tipe pembungkus objek yang ditolak compiler pada penugasan ke primitif.

Referensi#