Tipe Data

Tipe data adalah suatu struktur data yang terdapat pada variable atau merepresentasikan suatu value.

Javascript adalah bahasa pemograman yang dinamis untuk urusan tipe data karena variable dalam javascript akan berubah tipe datanya tergantung dari value yang ditetapkan pada variable. 

Perhatikan Kode berikut ini

let foo = 'string'; // tipe data saat ini string
 
foo = 23; // sekarang menjadi tipe data number
 
foo = true; // sekarang berubah menjadi tipe data boolean

Setiap bahasa pemograman memiliki struktur data mereka masing-masing. Javascript sendiri mengelompokan tipe data kedalam 2 jenis yaitu tipe data primitive dan tipe data object. 

Tipe Data Primitive

Tipe data primitive merupakan tipe data yang bersifat immutable, artinya dalam tipe data jenis ini nilai tidak dapat dirubah atau di manipulasi.

Tipe data primitive memiliki 7 jenis tipe data diantaranya: 

1. Boolean

Tipe data boolean mengambarkan entitas logika, boolean hanya memiliki 2 kondisi yaitu true dan false.

Perhatikan kode berikut ini

const foo = true // boolean dengan kondisi true 

const foo2 = false // boolean dengan kondisi false 

2. String Literal

String atau dapat disebut dengan string literal adalah tipe data yang merepresentasikan data yang bersifat textual.

Penulisan tipe data jenis ini dengan menggunakan singgle quote (‘’) atau dapat juga menggunakan double quote (“”). 

// menggunakan double quote 
const alamat = "rumah saya no 40"

// atau dapat menggunakan single quote 
const kota = 'pontianak'

Tentunya terdapat perbedaan dari penulisan singgle quote dengan double quote.

Dengan penulisan menggunakan singgle quote anda dapat menggunakan backslash (\) untuk menampilkan karakter tertentu. Seperti jika anda ingin menuliskan petik tunggal (singgle quote) pada value string anda. 

const name = 'I\'m Muhammad Iqbal'; // output -> I'm Muhammad Iqbal

Tipe data string dapat dilakukan penggabungan terhadap nilai-nilai string lainnya. penggabungan tersebut dapat diimplementasikan dengan menggunakan concatenation operator (+) terhadap string yang ingin digabungkan. 

const name = 'I\'m Muhammad Iqbal' + ' and i live in pontianak';
// output -> I'm Muhammad Iqbal and i live in pontianak 

3. Number

Apabila value berupa angka maka javascript akan menggap ini sebagai tipe data number baik angka tersebut desimal (interger) atau pecahan (float).

// number untuk integer 
const angka = 121

// number juga bisa menjadi float 
const angkaPecahan = 7.5

4. Bigint

Sesuai dengan namanya bigint artinya bilangan decimal yang besar. Bigint adalah integer presisi yang mampu mewakili bilangan bulat uang lebih besar dari 253 -1.

Jika hanya mengandalkan tipe dataa number/integer maka maksimal penggunaan 9007199254740992. Apabila jumlahnya melebihi dari 9007199254740992, integer tidak support.

Perhatikan kode dibawah ini.

const limit = Number.MAX_SAFE_INTEGER;
// output -> 9007199254740991

limit + 1 
// output -> 9007199254740992 

limit + 2 
// output -> 9007199254740992 <-- mengunci nilai Number.MAX_SAFE_INTEGER + 1

/* 
   Seharusnya Number.MAX_SAFE_INTEGER = 9007199254740991 + 2 = 9007199254740993
   Akan tetapi otuput yang dihasilkan tetap 9007199254740992. 
   Hal ini disebabkan karena melewati batas maximal Number.MAX_SAFE_INTEGER + 1
*/

Mudahnya untuk memahami perintah Number.MAX_SAFE_INTEGER adalah menampilkan batas maksimal number, sehingga ouput yang dihasilkan 9007199254740991.

Sedangkan bila number melebihi batas maksimal 9007199254740992 ini dikarenakan tipe data number mengunci nilai Number.MAX_SAFE_INTEGER + 1,

Dan bila batas maksimal di tambah lebih dari 1 (satu), maka komputer akan tetap menampilkan Number.MAX_SAFE_INTEGER + 1 atau 9007199254740992.

Pada kasus diatas kita memerlukan fungsi BigInt() untuk menangani permasalahan tersebut.

Dan cara menggunakan bigint dapat melalui fungsi BigInt() atau juga menambahkan (n) pada akhir value.

Perhatikan kode berikut ini

// cara pertama deklarasi tipe data bigint
const bilangBesar = 9007199254740991n;

// cara kedua deklarasi tipedata bigint 
const bilanganBesarJuga = BigInt(9007199254740991);

// batas maksimal int
const maksimal = BigInt(Number.MAX_SAFE_INTEGER);

// batas maksimal di kali 2 
const maksimalDikali2 = maksimal * 2n;

// mengetahui tipe data 
console.log(typeof bilangBesar); // output -> bigint 

//hasil perkalian 2 batas maksimal (9007199254740991n * 2n)
console.log(maksimalDikali2); // output -> 18014398509481982n

5. Symbol

Tipe data symbol diperkenalkan oleh ES6, symbol merupakan tipe data primitive yang bersifat immutable(tidak dapat berubah).

Setiap tipe data symbol akan mengembalikan dengan nilai Symbol() karena penggunaan tipe data ini menggunakan fungsi Symbol().

Karean tujuan dari penggunaan fungsi symbol adalah untuk melakukan identifikasi property pada objek dikarenakan tipe data symbol bersifat unik.

// tipe data symbol akan mengembalikan data symbol()
const symbol1 = Symbol(); // output -> Symbol()

// deklarasi dengan dua nilai symbol() yang sama
const symbol2 = Symbol(23);
const symbol3 = Symbol(23);

console.log(symbol2 === symbol3); // output -> false 
// meskipun nilai kedua variable sama
// akan tetapi tetap menghasilkan nilai false 
// karena fungsi symbol bersifat unik 
// berarti symbol akan tetap menganggap kedua variable tersebut berbeda

Syntak Symbol.

Symbol([deskripsi])

Keterangan: Deskripsi besifat optional, deskripsi digunakan pada saat debugging, karena kita tidak dapat mengakses nilai pada symbol.

Symbol memiliki ciri yaitu tidak dapat di konversi dalam sebagai string. Meskipun hampir semua tipe data mendukung secara implisit untuk di konversi sebagai string dengan bantuan fungsi alert() akan tetapi Symbol tidak dapatmelakukannya.

const symbol1 = Symbol("sym");

alert(symbol1); // output -> TypeError: Cannot convert a Symbol value to a string 

Jika tetap ingin menampilkan symbol sebagai string maka kita harus menggunakan fungsi toString() atau kita juga dapat menggunakan symbol.description untuk mendapatkan deskripsi dari symbol.

const symbol1 = Symbol("sym");

alert(symbol1.toString()); // output -> Symbol("sym")

alert(symbol1.description); // output -> sym

6. Null

Null yaitu merepresentasikan nilai kosong/tidak ada nilai sama sekali. berbeda apabila anda menuliskan string kosong untuk mendefenisikan variable. javascript akan tetap menganggap bahwa variable tersebut bernilai string.

Pemberian nilai null dilakukan secara sengaja, yang bertujuan untuk mendefenisikan variable tanpa nilai atau kosong. 

const foo = null;
 
console.log(foo); // output -> null
 
// ini merupakan kesalahan saat pengembangan awal javascript
console.log(typeof null); // output -> object

Baris kode terakhir menunjukan bahwa null bertipe object. Ini merupakan warisan kesalahan saat awal pengembangan javascript. meskipun saya merasa penggunaan null jarang digunakan saat produksi, namun kita perlu untuk mengetahui tipe data yang satu ini. 

7. Undefined

Mudahnya untuk memahami undefined yaitu variable yang belum didefenisikan atau tidak diberi nilai.

Perhatikan kode berikut ini. 

const foo
 
console.log(foo); // output -> undefined
 
console.log(typeof foo); // output -> undefined

Undefined biasanya ada akibat kelalaian atau kesalahan dari programmer dalam menulis kode. penulisan undefined juga bisa dilakukan secara eksplisit seperti. 

const foo = undefined;
 
console.log(foo); // output -> undefined

Namun sebaiknya anda tidak melakukan hal ini dalam menulis kode program, karna menurut saya memang tidak ada gunanya.

Tipe Data Object

Tipe data object adalah tipe data yang bersifat mutable, artinya data ini dapat dimanupulasi berdasarkan method yang disediakan oleh tipe data ini. klasifikasi tipe data object dibagi menjadi dua yaitu Function, Array dan Object. dikarenakan pembahasan tentang function, array dan objek sangat penting dan pembahasannya cukup panjang, kami akan membahasnya pada bab terpisah secara khusus.

1 thought on “Tipe Data”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s