0Pricing
TypeScript Academy · Pelajaran

Memahami infer dalam Tipe Kondisional

Ekstrak tipe bagian dalam menggunakan infer pada klausa extends.

Memahami infer dalam Tipe Kondisional adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 4 pelajaran total.

Apa Itu infer?

Kata kunci infer muncul di dalam tipe kondisional dan memungkinkan TypeScript menangkap variabel tipe dari posisi yang cocok, sehingga Anda dapat menggunakannya di cabang true.

type GetReturn<T> = T extends (...args: any[]) => infer R ? R : never;

Contoh Dasar infer

Di sini, Anda mengekstrak tipe hasil dari fungsi apa pun menggunakan infer R.

type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
type A = ReturnType<() => string>;  // string
type B = ReturnType<() => number[]>; // number[]

Cara Kerja infer

TypeScript mencocokkan struktur T dengan pola tersebut. Jika cocok, variabel hasil inferensi menyimpan bagian yang cocok. Jika tidak, cabang false yang digunakan.

type First<T> = T extends [infer F, ...any[]] ? F : never;
type X = First<[string, number, boolean]>; // string

Inferensi dari Parameter Generik

Anda dapat menginferensikan argumen tipe dari tipe generik, misalnya dengan mengekstrak T dari Promise.

type Unwrap<T> = T extends Promise<infer U> ? U : T;
type A = Unwrap<Promise<string>>; // string
type B = Unwrap<number>;          // number

Beberapa Variabel infer

Anda dapat menggunakan beberapa klausa infer dalam satu tipe kondisional untuk menangkap beberapa posisi sekaligus.

type Head<T> = T extends [infer H, ...infer Tail] ? H : never;
type Tail<T> = T extends [infer H, ...infer Tail] ? Tail : never;

infer pada Parameter Fungsi

Infer juga dapat menangkap tipe parameter fungsi, bukan hanya tipe hasil.

type FirstParam<T> = T extends (first: infer P, ...rest: any[]) => any ? P : never;
type A = FirstParam<(x: string, y: number) => void>; // string

Perilaku Distributif dengan infer

Saat T berupa gabungan, tipe kondisional, termasuk yang menggunakan infer, didistribusikan ke setiap anggota gabungan.

type UnwrapAll<T> = T extends Promise<infer U> ? U : T;
type X = UnwrapAll<Promise<string> | Promise<number>>;
// string | number

infer Bertingkat

Anda dapat menyusun infer secara bertingkat untuk menjangkau bagian yang lebih dalam dari struktur tipe, misalnya mengekstrak tipe nilai array di dalam promise.

type UnwrapPromiseArray<T> =
  T extends Promise<infer U>
    ? U extends (infer V)[]
      ? V
      : U
    : T;

infer dengan Pola String

Tipe literal templat yang dipadukan dengan infer memungkinkan Anda mengekstrak substring dari tipe literal string.

type GetDomain<T extends string> =
  T extends `https://${infer Domain}` ? Domain : never;
type D = GetDomain<"https://example.com">; // "example.com"

Kesalahan Umum

Infer hanya berfungsi di dalam klausa extends pada tipe kondisional. Menggunakannya di tempat lain menyebabkan galat kompilasi. Selain itu, infer di cabang false tidak tersedia.

// Error: infer can only appear in extends clauses
type Bad<T> = infer R; // SyntaxError

Rangkuman: infer

Kata kunci infer memungkinkan TypeScript menangkap fragmen tipe dari pencocokan struktural dalam tipe kondisional. Fitur ini menjadi dasar tipe utilitas seperti ReturnType, Parameters, dan Awaited.

Pemeriksaan Cepat

Di mana kata kunci infer dapat digunakan?

Yang Anda Pelajari

Kata kunci infer memungkinkan pencocokan pola pada tingkat tipe dengan mengekstrak fragmen tipe dari pola struktural. Fitur ini menjadi dasar tipe utilitas yang ampuh dan metaprogram tingkat tipe yang aman dalam TypeScript.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Memahami infer dalam Tipe Kondisional” gratis?

Ya — teks lengkap “Memahami infer dalam Tipe Kondisional” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Memahami infer dalam Tipe Kondisional”?

Ekstrak tipe bagian dalam menggunakan infer pada klausa extends. Kamu berlatih TypeScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai TypeScript Academy?

Tidak diperlukan pengalaman sebelumnya. TypeScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Memahami infer dalam Tipe Kondisional” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran TypeScript Academy ini?

Ya. Setiap pelajaran TypeScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Memahami infer dalam Tipe Kondisional
  2. Membangun ReturnType dan Parameters dari Nol
  3. Pola Inferensi Bertingkat Dalam
  4. Kasus Penggunaan infer Praktis: Membuka Bungkus Promise
← Kembali ke TypeScript Academy