Utility Types — TypeScript

TypeScript menyediakan utility types bawaan: Partial — semua property jadi opsional: interface User { nama: string; umur: number; } type PartialUser = Partial;

TypeScript menyediakan utility types bawaan:

Partial<T> — semua property jadi opsional:

interface User { nama: string; umur: number; }
type PartialUser = Partial<User>; // { nama?: string; umur?: number; }

Required<T> — semua property jadi wajib

Pick<T, K> — ambil property tertentu:

type UserName = Pick<User, "nama">; // { nama: string }

Omit<T, K> — hapus property tertentu:

type NoAge = Omit<User, "umur">; // { nama: string }

Record<K, V> — object dengan key dan value type:

type Scores = Record<string, number>;
const skor: Scores = { math: 90, science: 85 };

Readonly<T> — semua property readonly

ReturnType<T> — tipe return dari fungsi:

function getUser() { return { nama: "Budi", umur: 17 }; }
type UserType = ReturnType<typeof getUser>; // { nama: string; umur: number }

Parameters<T> — tipe parameter dari fungsi (sebagai tuple):

function kirim(to: string, pesan: string, prioritas: number) {}
type KirimArgs = Parameters<typeof kirim>;
// [string, string, number]

Berguna saat kamu ingin membungkus (wrap) fungsi lain tanpa mengetik ulang parameternya.

Awaited<T> — membuka tipe Promise<...>:

type A = Awaited<Promise<string>>;            // string
type B = Awaited<Promise<Promise<number>>>;   // number (auto-unwrap)

Exclude<T, U> dan Extract<T, U> — operasi set pada union:

type Arah = "up" | "down" | "left" | "right";

type Horizontal = Extract<Arah, "left" | "right">;  // "left" | "right"
type Vertikal   = Exclude<Arah, "left" | "right">;  // "up" | "down"

NonNullable<T> — buang null dan undefined:

type Raw = string | null | undefined;
type Aman = NonNullable<Raw>; // string

Yang akan kamu pelajari