TypeScript Academy · Pelajaran

Tipe Kondisional: T extends U ? X : Y

Tulis pernyataan if pada tingkat tipe dengan tipe kondisional.

Pelajaran 3 dari 413 langkah

Tipe Kondisional: T extends U ? X : Y adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

Selamat Datang

Tipe kondisional memungkinkan Anda menyatakan pernyataan if pada tingkat tipe. Tipe ini merupakan bagian inti dari sistem tipe tingkat lanjut TypeScript dan digunakan untuk membuat tipe utilitas.

Sintaks Dasar

Tuliskan T extends U ? X : Y. Jika T dapat ditetapkan ke U, hasilnya adalah X; jika tidak, hasilnya Y.
type IsString<T> = T extends string ? true : false;
type A = IsString<string>; // true
type B = IsString<number>; // false

Bawaan NonNullable

NonNullable diimplementasikan dengan tipe kondisional yang menghapus null dan undefined dari T.
type NonNullable<T> = T extends null | undefined ? never : T;
type C = NonNullable<string | null>; // string

Kondisional dengan Generik

Tipe kondisional paling berguna di dalam fungsi generik dan alias tipe.
type Flatten<T> = T extends Array<infer I> ? I : T;
type Str = Flatten<string[]>; // string
type Num = Flatten<number>;   // number

Kondisional Bertingkat

Tipe kondisional dapat dibuat bertingkat untuk logika yang lebih kompleks.
type TypeName<T> =
  T extends string ? 'string' :
  T extends number ? 'number' :
  T extends boolean ? 'boolean' :
  'object';

Distribusi pada Gabungan

Saat T merupakan parameter tipe sederhana, tipe kondisional didistribusikan ke setiap anggota gabungan.
type ToArray<T> = T extends any ? T[] : never;
type R = ToArray<string | number>; // string[] | number[]

Mencegah Distribusi

Bungkus T dalam tuple untuk mencegah distribusi.
type NoDistribute<T> = [T] extends [any] ? T[] : never;
type R2 = NoDistribute<string | number>; // (string | number)[]

Menggunakan never untuk Memfilter

Mengembalikan never dari tipe kondisional akan menghapus anggota gabungan.
type OnlyStrings<T> = T extends string ? T : never;
type S = OnlyStrings<'a' | 'b' | 1 | 2>; // 'a' | 'b'

Tipe Kondisional dalam Tipe Pemetaan

Gabungkan tipe pemetaan dan tipe kondisional untuk mengubah properti objek secara selektif.
type NullableValues<T> = { [K in keyof T]: T[K] extends string ? null : T[K] };

Menyimpulkan dari Parameter Fungsi

Gunakan infer dalam tipe kondisional untuk mengambil bagian dari tipe kompleks.
type FirstParam<T> = T extends (first: infer P, ...rest: any[]) => any ? P : never;
type FP = FirstParam<(a: string, b: number) => void>; // string

Utilitas Kondisional Bawaan

Banyak utilitas bawaan (ReturnType, Parameters, InstanceType) dibuat dengan tipe kondisional dan infer.
type ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;

Pemeriksaan Singkat

Apa hasil dari `type R = string extends object ? 'yes' : 'no'`?

Ringkasan

Tipe kondisional (T extends U ? X : Y) memungkinkan logika pada tingkat tipe. Tipe ini didistribusikan ke gabungan, bekerja dengan infer untuk ekstraksi, dan menjadi dasar banyak tipe utilitas bawaan TypeScript.
Gratis untuk memulai

Belajar TypeScript dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
101
Pelajaran
352

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Tipe Kondisional: T extends U ? X : Y” gratis?

Ya — teks lengkap “Tipe Kondisional: T extends U ? X : Y” 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 “Tipe Kondisional: T extends U ? X : Y”?

Tulis pernyataan if pada tingkat tipe dengan tipe kondisional. 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 3 dari 4.

Berapa lama pelajaran “Tipe Kondisional: T extends U ? X : Y” 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. Tipe Akses keyof dan Terindeks
  2. Batasan Generik: Mempersempit Parameter Tipe
  3. Tipe Kondisional: T extends U ? X : Y
  4. Tipe Kondisional Distributif
← Kembali ke TypeScript Academy