TypeScript Academy · Pelajaran

Fungsi Tulen dan Ketidakbolehubahan

Tulis fungsi yang boleh diramal tanpa kesan sampingan.

Pelajaran 1 daripada 413 langkah

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, always

Contoh 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 history

Ketelusan 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); // true

Mengapa 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 31

Mengemas 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])); // 6

Menolak 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.

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 “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

  1. Fungsi Tulen dan Ketidakbolehubahan
  2. Kari dan Penggunaan Separa
  3. Gubahan Fungsi dengan Jenis
  4. Utiliti pipe dan flow Bertaip
← Kembali ke TypeScript Academy