Fungsi Tulen dan Ketidakbolehubahan
Tulis fungsi yang boleh diramal tanpa kesan sampingan.
Fungsi Tulen dan Ketidakbolehubahan ialah pelajaran TypeScript Academy percuma di CoddyKit. Ini ialah pelajaran 1 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.
Apakah Fungsi Tulen?
Fungsi tulen memulangkan keluaran yang sama untuk masukan yang sama dan tidak mempunyai kesan sampingan. Fungsi ini tidak membaca atau menulis keadaan luaran, memutasi argumennya atau melakukan operasi masukan/keluaran.
Contoh Tulen
Fungsi ini hanya bergantung pada argumennya dan hanya menghasilkan nilai pulangan. Memanggilnya tidak pernah mengubah apa-apa di luar fungsi.
function add(a: number, b: number): number {
return a + b;
}
console.log(add(2, 3)); // 5, alwaysContoh Tidak Tulen
Fungsi ini membaca dan memutasi pemboleh ubah di luar skopnya, jadi hasilnya bergantung pada keadaan tersembunyi dan meninggalkan kesan. Itulah yang menjadikannya tidak tulen.
let counter = 0;
function next(): number {
counter += 1; // side effect
return counter;
}
console.log(next(), next()); // 1 2, depends on historyKetelusan Rujukan
Panggilan tulen adalah telus dari segi rujukan: anda boleh menggantikan panggilan itu dengan hasilnya tanpa mengubah atur cara. add(2, 3) boleh digantikan dengan 5 di mana-mana sahaja.
const x = add(2, 3) * 2;
const y = 5 * 2; // identical meaning
console.log(x === y); // trueMengapa Ketulenan Membantu
Fungsi tulen mudah diuji (tanpa persediaan), mudah dicache, selamat dijalankan secara selari dan mudah difahami kerana tidak mempunyai kebergantungan tersembunyi.
Elakkan Memutasi Argumen
Memutasi tatasusunan atau objek masukan ialah kesan sampingan yang mungkin tidak dijangka oleh pemanggil. Sebaliknya, bina dan pulangkan nilai baharu.
// Impure: mutates input
function pushImpure(xs: number[], v: number) { xs.push(v); return xs; }
// Pure: returns a new array
function pushPure(xs: number[], v: number): number[] { return [...xs, v]; }Kemas Kini Tidak Boleh Ubah dengan Sebaran
Operator sebaran menyalin objek atau tatasusunan, lalu membolehkan anda menggantikan medan tanpa menyentuh yang asal. Inilah alat utama untuk kemas kini tidak boleh ubah dalam TS.
interface User { name: string; age: number }
function birthday(u: User): User {
return { ...u, age: u.age + 1 };
}
const before = { name: "Ada", age: 30 };
const after = birthday(before);
console.log(before.age, after.age); // 30 31Mengemas Kini Tatasusunan Tanpa Mutasi
Gunakan map, filter dan sebaran untuk menghasilkan tatasusunan baharu dan bukannya memutasi. Tatasusunan asal dibiarkan utuh untuk digunakan oleh kod lain.
const nums = [1, 2, 3];
const doubled = nums.map(n => n * 2);
console.log(nums, doubled); // [1,2,3] [2,4,6]readonly untuk Keselamatan
Menandakan parameter sebagai readonly memberitahu pengkompil (dan pembaca) bahawa fungsi tidak akan memutasinya, sekali gus mengukuhkan ketulenan pada peringkat jenis.
function sum(xs: readonly number[]): number {
return xs.reduce((a, b) => a + b, 0);
}
console.log(sum([1, 2, 3])); // 6Menolak Kesan ke Pinggir
Atur cara sebenar memerlukan kesan seperti pengelogan dan rangkaian. Gaya fungsian mengekalkan teras yang tulen dan mengasingkan kesan di sempadan, supaya kebanyakan kod kekal mudah dijangka.
Senarai Semak Pemikiran
Untuk setiap fungsi, tanyakan: adakah fungsi itu hanya bergantung pada masukannya? Adakah fungsi itu hanya memulangkan nilai? Adakah fungsi itu membiarkan masukan dan dunia luar tidak berubah? Tiga jawapan ya bermakna fungsi itu tulen.
Semakan Pantas
Semakan pantas tentang pelajaran ini.
Imbas Kembali
Fungsi tulen hanya bergantung pada masukan dan tidak menghasilkan kesan sampingan, lalu memberikan ketelusan rujukan. Gunakan sebaran, map/filter dan readonly untuk kemas kini tidak boleh ubah, serta tolak kesan dunia sebenar ke pinggir atur cara.
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 “Fungsi Tulen dan Ketidakbolehubahan” percuma?
Ya — teks penuh “Fungsi Tulen dan Ketidakbolehubahan” 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 “Fungsi Tulen dan Ketidakbolehubahan”?
Tulis fungsi yang boleh diramal tanpa kesan sampingan. 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 1 daripada 4.
Berapa lamakah pelajaran “Fungsi Tulen dan Ketidakbolehubahan” 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
- Fungsi Tulen dan Ketidakbolehubahan
- Kari dan Penggunaan Separa
- Gubahan Fungsi dengan Jenis
- Utiliti pipe dan flow Bertaip