TypeScript Academy · Pelajaran

Tatasusunan Readonly dan Data Tidak Boleh Ubah

Gunakan ReadonlyArray untuk mencegah perubahan tidak sengaja.

Pelajaran 2 daripada 413 langkah

Tatasusunan Readonly dan Data Tidak Boleh Ubah ialah pelajaran TypeScript Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran TypeScript Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.

Selamat Datang

Tatasusunan yang boleh diubah boleh terubah secara tidak sengaja di mana-mana sahaja dalam kod anda. ReadonlyArray dan pengubah suai readonly TypeScript membantu anda menguatkuasakan ketidakbolehubahan.

Pengubah Suai readonly pada Tatasusunan

Tambahkan pengubah suai `readonly` sebelum jenis tatasusunan untuk menghalang pengubahsuaian. Tatasusunan itu boleh dibaca tetapi tidak boleh diubah.
const ids: readonly number[] = [1, 2, 3];
// ids.push(4);   // Error
// ids[0] = 99;   // Error
console.log(ids[0]); // OK — reading is fine

Bentuk Generik ReadonlyArray<T>

`ReadonlyArray` ialah bentuk generik yang setara dengan `readonly T[]`. Kedua-duanya menghalang push, pop, splice dan penetapan indeks.
const names: ReadonlyArray<string> = ['Alice', 'Bob'];
// names.push('Charlie'); // Error

Mengembalikan Tatasusunan Baca Sahaja daripada Fungsi

Kembalikan tatasusunan baca sahaja daripada fungsi untuk menunjukkan kepada pemanggil bahawa hasil tersebut tidak sepatutnya diubah.
function getConfig(): readonly string[] {
  return ['host', 'port', 'db'];
}

Parameter Fungsi Tidak Boleh Diubah

Tandai parameter tatasusunan sebagai readonly untuk menghalang fungsi daripada mengubah tatasusunan milik pemanggil.
function sum(nums: readonly number[]): number {
  return nums.reduce((a, b) => a + b, 0);
  // nums.push(99); // Error inside function
}

as const untuk Tatasusunan Literal

Penegasan `as const` menjadikan tatasusunan baca sahaja dan membuat inferens jenis tupel dengan jenis elemen literal, bukannya jenis yang diperluas.
const colors = ['red', 'green', 'blue'] as const;
// type: readonly ['red', 'green', 'blue']
// colors.push('yellow'); // Error

Readonly Tidak Membekukan Secara Mendalam

readonly hanya menghalang rujukan tatasusunan daripada diubah. Jika elemennya ialah objek, sifat objek tersebut masih boleh diubah.
const users: readonly { name: string }[] = [{ name: 'Alice' }];
// users.push({}); // Error
users[0].name = 'Bob'; // Allowed — object itself is mutable

Ketidakbolehubahan Mendalam dengan Readonly<T>

Untuk ketidakbolehubahan objek secara mendalam, gabungkan ReadonlyArray dengan Readonly pada elemennya. Atau gunakan pustaka seperti immer.
type ImmutableUser = Readonly<{ name: string; scores: readonly number[] }>;
const u: ImmutableUser = { name: 'Alice', scores: [90, 85] };
// u.name = 'Bob';       // Error
// u.scores.push(100);  // Error

Penetapan Boleh Diubah berbanding Baca Sahaja

Tatasusunan baca sahaja TIDAK boleh ditetapkan kepada jenis tatasusunan boleh ubah. Ini melindungi anda daripada menghantar tatasusunan tidak boleh diubah secara tidak sengaja apabila pengubahsuaian dijangka.
const ro: readonly number[] = [1, 2];
const mutable: number[] = ro; // Error!

Bila Perlu Menggunakan Tatasusunan Baca Sahaja

Gunakan tatasusunan baca sahaja untuk objek konfigurasi, pemalar, parameter fungsi yang anda janjikan tidak akan diubah dan nilai pulangan daripada fungsi tulen.

Pengembangan Mencipta Tatasusunan Boleh Ubah Baharu

Mengembangkan tatasusunan baca sahaja ke dalam literal tatasusunan baharu akan mencipta salinan yang boleh diubah. Ini ialah corak yang kemas untuk membuat perubahan tanpa pengubahsuaian terus.
const base: readonly number[] = [1, 2, 3];
const extended: number[] = [...base, 4]; // new mutable array

Semakan Pantas

Operasi manakah yang TIDAK dibenarkan pada `readonly number[]` dalam TypeScript?

Rumusan

Gunakan `readonly T[]` atau `ReadonlyArray` untuk menghalang pengubahsuaian tatasusunan. Gunakan `as const` untuk tatasusunan pemalar literal. Pengembangan mencipta salinan boleh ubah apabila anda perlu menambah elemen pada tatasusunan baca sahaja.
Percuma untuk bermula

Pelajari TypeScript dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
101
Pelajaran
352

Soalan Lazim

Adakah pelajaran “Tatasusunan Readonly dan Data Tidak Boleh Ubah” percuma?

Ya — teks penuh “Tatasusunan Readonly dan Data Tidak Boleh Ubah” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus TypeScript Academy, tingkat taraf kepada CoddyKit PRO. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Tatasusunan Readonly dan Data Tidak Boleh Ubah”?

Gunakan ReadonlyArray untuk mencegah perubahan tidak sengaja. Anda berlatih TypeScript Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan TypeScript Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran TypeScript Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Tatasusunan Readonly dan Data Tidak Boleh Ubah” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran TypeScript Academy ini?

Ya. Setiap pelajaran TypeScript Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Tatasusunan Bertaip: T[] dan Array
  2. Tatasusunan Readonly dan Data Tidak Boleh Ubah
  3. Tuple: Tatasusunan Bertaip Panjang Tetap
  4. Enum: Pemalar Numerik dan Rentetan
← Kembali ke TypeScript Academy