0Pricing
TypeScript Academy · Pelajaran

Pengubah dalam Tipe Terpetakan: readonly dan ?

Tambahkan atau hapus pengubah dengan +/- dalam tipe terpetakan.

Pengubah dalam Tipe Terpetakan: readonly dan ? adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 pemetaan dapat menambahkan atau menghapus pengubah `readonly` dan opsional (`?`) dari properti menggunakan awalan `+` dan `-`.

Menambahkan Pengubah dengan +

Awalan `+` (yang secara bawaan bersifat implisit) menambahkan pengubah pada setiap properti dalam tipe pemetaan.
type Readonly<T> = { +readonly [K in keyof T]: T[K] }; // + is implicit
type Optional<T> = { [K in keyof T]+?: T[K] };

Menghapus readonly dengan -

Gunakan `-readonly` untuk menghapus pengubah readonly dari properti.
type Mutable<T> = { -readonly [K in keyof T]: T[K] };
const mutableUser: Mutable<Readonly<User>> = { id: 1, name: 'Alice' };
mutableUser.id = 2; // OK now

Menghapus ? dengan -

Gunakan `-?` untuk menghapus pengubah opsional sehingga semua properti menjadi wajib.
type Required<T> = { [K in keyof T]-?: T[K] };
// Now all optional properties become required

Menggabungkan - dan -?

Anda dapat menggabungkan kedua penghapusan tersebut untuk membuat versi tipe yang dapat diubah dan wajib.
type Concrete<T> = { -readonly [K in keyof T]-?: T[K] };

Partial dan Required Saling Berlawanan

Partial menambahkan `?` dengan +?. Required menghapusnya dengan -?.
// From TypeScript lib:
type Partial<T> = { [K in keyof T]?: T[K] };   // adds ?
type Required<T> = { [K in keyof T]-?: T[K] };  // removes ?

Mempertahankan Pengubah Secara Bawaan

Tanpa + atau - yang ditulis secara eksplisit, tipe pemetaan mempertahankan pengubah yang sudah ada dari tipe sumber.
interface User { readonly id: number; name?: string; }
type Copy<T> = { [K in keyof T]: T[K] };
type C = Copy<User>; // readonly id preserved, name? preserved

Penggunaan Praktis: Tipe Patch

Buat tipe Patch yang menjadikan semua properti opsional sekaligus menghapus readonly agar dapat diperbarui.
type Patch<T> = { -readonly [K in keyof T]?: T[K] };

DeepReadonly

Terapkan readonly secara rekursif dengan tipe kondisional di dalam tipe pemetaan.
type DeepReadonly<T> = {
  readonly [K in keyof T]: T[K] extends object ? DeepReadonly<T[K]> : T[K]
};

DeepPartial

Demikian pula, terapkan ? secara rekursif untuk menghasilkan tipe yang sangat opsional.
type DeepPartial<T> = {
  [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K]
};

Tabel Kombinasi Pengubah

+readonly = menambahkan readonly. -readonly = menghapus readonly. +? = menambahkan opsional. -? = menghapus opsional. Keempatnya dapat digabungkan.

Pemeriksaan Singkat

Apa yang dihasilkan oleh `{ [K in keyof T]-?: T[K] }`?

Ringkasan

Gunakan awalan +/- sebelum readonly dan ? dalam tipe pemetaan untuk menambahkan atau menghapus pengubah tersebut secara eksplisit. -? mengimplementasikan Required, sedangkan -readonly mengimplementasikan Mutable. Gabungkan keduanya untuk mengendalikan kemampuan perubahan secara menyeluruh.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pengubah dalam Tipe Terpetakan: readonly dan ?” gratis?

Ya — teks lengkap “Pengubah dalam Tipe Terpetakan: readonly dan ?” 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 “Pengubah dalam Tipe Terpetakan: readonly dan ?”?

Tambahkan atau hapus pengubah dengan +/- dalam tipe terpetakan. 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 2 dari 4.

Berapa lama pelajaran “Pengubah dalam Tipe Terpetakan: readonly dan ?” 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 Terpetakan: Mengubah Tipe Objek
  2. Pengubah dalam Tipe Terpetakan: readonly dan ?
  3. Tipe Literal Templat: Pola String
  4. Pemetaan Ulang Kunci dengan as dalam Tipe Terpetakan
← Kembali ke TypeScript Academy