TypeScript
Tipe Data Primitif

Tipe Data Dasar (Basic Types) 🧱

Sebelum masuk ke tipe data, kita harus paham dulu konsep Type Annotation dan Type Inference. Ini adalah cara kita "Ngobrol" sama TypeScript.

1. Type Annotation (Memberi Label) 🏷️

Type Annotation adalah cara eksplisit (terang-terangan) ngasih tau TypeScript: "Eh, variabel ini isinya HARUS tipe X ya!".

Caranya pake tanda titik dua (:) setelah nama variabel.

Syntax: let namaVariabel: TipeData = Nilai;

// Kita MAKSA variabel ini harus String
let nama: string = "Pian";
 
// Kita MAKSA variabel ini harus Number
let umur: number = 25;

2. Type Inference (Tebak-tebakan) 🧠

TypeScript itu pinter. Kalau lo langsung ngisi nilainya pas deklarasi, lo GAK PERLU nulis Annotation. TS bakal nebak sendiri.

Syntax: let namaVariabel = Nilai;

// TS liat ada kutip dua, dia otomatis stempel ini jadi 'string'
let kota = "Jakarta";
 
// kota = 100; // ❌ Error! TS marah: "Woy, tadi kan string?"

Kapan Harus Pake Annotation? 🤔

Gunakan Annotation kalau:

  • Variabelnya kosong dulu (belum ada nilainya).

  • Tipe datanya ribet/unik (nanti kita bahas di Union Type).

  • Return Function (biar jelas outputnya apa).

// Kasus 1: Deklarasi kosong
let hobi: string;
 
// Nanti baru diisi
hobi = "Mancing";

3. The Primitives (Tipe Dasar)

Ini adalah bahan baku utama di JavaScript & TypeScript.

A. String (Teks)

Bisa pake kutip satu ', kutip dua ", atau backtick ` (Template Literal).

let depan: string = "Pian";
let belakang: string = "Kurniawan";
let sapaan: string = `Halo, nama gue ${depan}`; // Template Literal

B. Number (Angka)

Di TS, semua angka itu number. Gak ada bedanya antara bulat (int) atau koma (float).

let bulat: number = 10;
let koma: number = 3.14;
let minus: number = -5;
let jutaan: number = 1_000_000; // Bisa pake underscore biar gampang dibaca

C. Boolean (Logika)

Cuma ada dua nilai: true atau false.

let isJomblo: boolean = true;
let isSelesai: boolean = false;

4. Null & Undefined (Si Kosong) 🕳️

Di TypeScript modern (dengan mode strict: true), sama dengan JavaScript, dua makhluk ini punya sifat beda.

  • Undefined: Variabel udah dibuat, tapi belum diisi.

  • Null: Variabel emang sengaja dikosongin.

let u: undefined = undefined;
let n: null = null;
⚠️

Strict Null Checks: Secara default di TS modern, lo GAK BISA masukin null ke variabel string atau number (Solusinya nanti pake Union Type: string | null)

5. BigInt & Symbol (Jarang Dipake tapi Ada) 🦕

Biar lengkap, lo harus tau ini ada.

A. BigInt

Buat angka yang GEDE BANGET (lebih dari 2^53). Tandanya pake huruf n di belakang.

// Perlu setting target: es2020 di tsconfig
let angkaRaksasa: bigint = 10000000000000000000000n;

B. Symbol

Buat bikin identifier yang bener-bener unik (biasanya dipake library tingkat lanjut).

let id1 = Symbol("id");
let id2 = Symbol("id");
 
// id1 === id2 hasilnya FALSE. Walau namanya sama, mereka beda barang.

Rangkuman: Kapan Pake Apa? 📝

SituasiPake Annotation? (: Tipe)Pake Inference? (Langsung =)
Variable ada isinya❌ Gak usah (Mubazir)✅ Yes (Lebih bersih)
Variable kosong✅ Wajib (Biar gak jadi any)❌ Gak bisa
Parameter Function✅ Wajib (Biar aman)❌ Gak bisa
// ✅ Good Code (Bersih)
let skor = 100;
 
// ❌ Bad Code (Bertele-tele)
let skor2: number = 100;