Advanced Types — TypeScript

TypeScript punya fitur type-level programming yang powerful untuk transformasi type. Mapped Types — membuat type baru dari type yang sudah ada: type Optional…

TypeScript punya fitur type-level programming yang powerful untuk transformasi type.

Mapped Types — membuat type baru dari type yang sudah ada:

type Optional<T> = { [K in keyof T]?: T[K] }
// Membuat semua property jadi optional

Conditional Types — type yang bergantung pada kondisi:

type IsString<T> = T extends string ? "yes" : "no"
type A = IsString<string>  // "yes"
type B = IsString<number>  // "no"

Template Literal Types — manipulasi string di level type:

type Event = "click" | "focus"
type Handler = `on${Capitalize<Event>}`  // "onClick" | "onFocus"

as const — membuat value menjadi literal type (readonly):

const colors = ["merah", "biru"] as const
// type: readonly ["merah", "biru"], bukan string[]

satisfies — validasi type tanpa mempersempit:

const config = {
  warna: "merah",
  ukuran: 42,
} satisfies Record<string, string | number>
// config.warna tetap type "merah" (bukan string)

Tips: as const + satisfies adalah combo yang sangat berguna untuk konfigurasi yang type-safe.

Yang akan kamu pelajari