Recraftory

TypeScript - Tipe Dasar

TypeScript menyediakan tipe bawaan yang memperluas kemampuan JavaScript.

Tipe Primitif

let nama: string = "Alice";
let umur: number = 25;
let aktif: boolean = true;

// Tipe khusus TypeScript
let tidakDiketahui: any = "apa saja";       // Hindari penggunaan any
let belumTahu: unknown = "bisa apa saja";   // Lebih aman dari any
let kosong: void = undefined;               // Fungsi tanpa return value
let tidakPernah: never;                     // Fungsi yang selalu throw error

Array dan Tuple

// Array
let angka: number[] = [1, 2, 3];
let namaOrang: Array<string> = ["Alice", "Bob"];

// Tuple — array dengan tipe terstruktur dan panjang tetap
let koordinat: [number, number] = [10, 20];
let pengguna: [string, number, boolean] = ["Budi", 25, true];

Enum

enum Status {
  Pending,    // 0
  Approved,   // 1
  Rejected,   // 2
}

enum Peran {
  Admin = "ADMIN",
  User = "USER",
  Guest = "GUEST",
}

let statusPesanan = Status.Pending;

Object dan Interface

interface Pengguna {
  id: number;
  nama: string;
  email?: string; // opsional dengan tanda ?
}

let user: Pengguna = { id: 1, nama: "Alice" };

Type Alias

type ID = string | number;
type Koordinat = [number, number];
type Callback = (error: Error | null, data?: string) => void;

Union dan Intersection

// Union — nilai bisa salah satu dari beberapa tipe
let id: string | number = 123;
id = "ABC";

// Intersection — gabungan semua properti dari beberapa tipe
interface Alamat {
  jalan: string;
  kota: string;
}

interface Kontak {
  telepon: string;
  email: string;
}

type ProfilLengkap = Alamat & Kontak;

let profil: ProfilLengkap = {
  jalan: "Jl. Merdeka",
  kota: "Jakarta",
  telepon: "08123456789",
  email: "budi@email.com",
};

Type Inference

TypeScript dapat menebak tipe secara otomatis:

let pesan = "Hello";        // TypeScript tahu ini string
let nilai = 42;             // TypeScript tahu ini number
let list = [1, 2, 3];       // TypeScript tahu ini number[]

// Tidak perlu menuliskan tipe jika sudah jelas dari konteks