Kasus Penggunaan infer Praktis: Membuka Bungkus Promise
Buka bungkus tipe Promise, Array, dan pembungkus khusus.
Kasus Penggunaan infer Praktis: Membuka Bungkus Promise adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.
Masalah Penguraian Pembungkus
Saat mengerjakan kode asinkron, Anda sering menerima Promise dan memerlukan T yang mendasarinya. Kata kunci infer membuat ekstraksi ini dapat digunakan kembali.
type Awaited<T> = T extends Promise<infer U> ? U : T;
type A = Awaited<Promise<string>>; // string
type B = Awaited<number>; // numberUtilitas Awaited Bawaan
TypeScript 4.5 memperkenalkan Awaited bawaan yang menangani promise bertingkat secara rekursif.
type A = Awaited<Promise<Promise<string>>>; // string
// Handles arbitrary nesting automaticallyMengurai dengan Kedalaman Kustom
Sebelum Awaited menjadi bawaan, pengembang menggunakan tipe rekursif dengan infer untuk mengurai promise.
type DeepAwaited<T> =
T extends Promise<infer U> ? DeepAwaited<U> : T;
type A = DeepAwaited<Promise<Promise<number>>>; // numberMengurai Elemen Array
Pola infer yang sama mengekstrak tipe elemen dari array, setara dengan pendekatan bawaan T[number].
type Element<T> = T extends (infer U)[] ? U : never;
type A = Element<string[]>; // string
type B = Element<number[]>; // numberMengurai Tipe Observable
Untuk Observable RxJS, infer mengekstrak tipe yang dipancarkan.
type ObservableType<T> = T extends Observable<infer U> ? U : never;
type A = ObservableType<Observable<User>>; // UserMengurai Hasil Fungsi
Gabungkan ReturnType dan Awaited untuk mendapatkan nilai terselesaikan dari fungsi asinkron.
async function getUser(): Promise<User> { /* ... */ }
type UserResult = Awaited<ReturnType<typeof getUser>>; // UserMengurai Pembungkus Bertingkat
Anda dapat merangkai infer untuk menangani tipe yang dibungkus dalam beberapa lapisan seperti Promise.
type UnwrapPromiseArray<T> =
T extends Promise<infer U>
? U extends (infer V)[]
? V
: U
: T;
type A = UnwrapPromiseArray<Promise<User[]>>; // UserPenguraian Kondisional Berdasarkan Bentuk
Gunakan infer untuk mengurai secara kondisional hanya tipe tertentu, sementara tipe lainnya dibiarkan tidak berubah.
type MaybeUnwrap<T> =
T extends Promise<infer U> ? U : T extends (infer V)[] ? V : T;
type A = MaybeUnwrap<Promise<string>>; // string
type B = MaybeUnwrap<number[]>; // number
type C = MaybeUnwrap<boolean>; // booleanPembungkus Pengambilan API Bertipe
Pembungkus pengambilan generik yang mengembalikan tipe data terselesaikan adalah penerapan klasik penguraian berbasis infer.
async function fetchData<T>(url: string): Promise<T> {
const res = await fetch(url);
return res.json() as T;
}
type UserData = Awaited<ReturnType<typeof fetchData<User>>>; // UserPenguraian yang Aman dari Galat
Pola Result yang dipadukan dengan infer memungkinkan Anda mengekstrak tipe keberhasilan dari gabungan terdiskriminasi.
type Ok<T> = { ok: true; value: T };
type Err = { ok: false; error: string };
type ExtractOk<T> = T extends Ok<infer V> ? V : never;
type A = ExtractOk<Ok<number> | Err>; // numberRangkuman: Mengurai dengan infer
Kata kunci infer adalah alat serbaguna untuk mengekstrak tipe dari pembungkus — promise, array, Observable, dan tipe Result. Awaited bawaan menangani penguraian asinkron; gunakan tipe kustom untuk struktur lainnya.
Pemeriksaan Cepat
Apa cara terbaik untuk mendapatkan tipe nilai terselesaikan dari fungsi asinkron?
Yang Anda Pelajari
Penguraian berbasis infer adalah alat praktis untuk kode TypeScript asinkron. Gunakan Awaited bawaan untuk promise dan buat tipe pengurai kustom untuk array, Observable, dan pola Result.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Kasus Penggunaan infer Praktis: Membuka Bungkus Promise” gratis?
Ya — teks lengkap “Kasus Penggunaan infer Praktis: Membuka Bungkus Promise” 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 “Kasus Penggunaan infer Praktis: Membuka Bungkus Promise”?
Buka bungkus tipe Promise, Array, dan pembungkus khusus. 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 4 dari 4.
Berapa lama pelajaran “Kasus Penggunaan infer Praktis: Membuka Bungkus Promise” 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
- Memahami infer dalam Tipe Kondisional
- Membangun ReturnType dan Parameters dari Nol
- Pola Inferensi Bertingkat Dalam
- Kasus Penggunaan infer Praktis: Membuka Bungkus Promise