Lompati ke konten utama
Modul 6 · Pelajaran 1 dari 211/14 dalam kursus~15 min
Pelajaran modul (1/2)

Jenis Bersyarat dan menyimpulkan

Tipe bersyarat memungkinkan Anda untuk mengekspresikan keputusan tipe non-sepele berdasarkan hubungan pewarisan. Sintaksnya menyerupai operator ternary JavaScript:

TS
T extends U ? X : Y

Jika tipe T dapat ditetapkan ke U, maka tipe yang dihasilkan adalah X, jika tidak maka akan menjadi Y.


Tipe Bersyarat Dasar

Tipe bersyarat mengevaluasi suatu kondisi pada waktu kompilasi:

TS
type IsNumber<T> = T extends number ? true : false;

type A = IsNumber<number>; // true
type B = IsNumber<string>; // false

Pola ini sangat kuat bila dikombinasikan dengan obat generik untuk menciptakan tipe utilitas yang fleksibel dan dinamis.


Ketik Ekstraksi dengan infer

Di dalam klausa extends bertipe kondisional, kita dapat menggunakan kata kunci infer untuk mendeklarasikan variabel tipe yang akan disimpulkan oleh kompiler.

Misalnya, jika kita ingin mengekstrak tipe kembalian suatu fungsi:

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

type ExampleFunction = () => string;
type Return = GetReturnType<ExampleFunction>; // string

Dalam contoh ini, infer R memberitahu TypeScript untuk secara otomatis menentukan tipe kembalian fungsi dan membuatnya tersedia sebagai R di cabang positif kondisional.


Cobalah sendiri

Latihan 1: Tipe IsString

Latihan#ts.m6.l1.e1
Upaya: 0Memuat…

Buat tipe generik bernama IsString<T> yang mengembalikan tipe literal benar jika T memperluas string, jika tidak salah.

Memuat editor…
Tunjukkan petunjuk

Gunakan tipe sintaksis IsString<T> = T extends string ? benar : salah; untuk memeriksa jenisnya.

Solusi tersedia setelah 3 upaya

Latihan 2: Mengekstrak tipe dari Array dengan infer

Latihan#ts.m6.l1.e2
Upaya: 0Memuat…

Tentukan tipe generik UnpackArray<T> yang menggunakan infer untuk mengekstrak tipe elemen array T. Jika T adalah array (misalnya U[]), kembalikan U, jika tidak, kembalikan tipe T yang sama.

Memuat editor…
Tunjukkan petunjuk

Gunakan T extends (simpulkan U)[] ? U : T untuk mendeklarasikan dan mengembalikan variabel tipe yang disimpulkan U.

Solusi tersedia setelah 3 upaya