Fungsi Murni dan Imutabilitas
Tulis fungsi yang dapat diprediksi tanpa efek samping.
Fungsi Murni dan Imutabilitas adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Apa Itu Fungsi Murni?
Fungsi murni mengembalikan keluaran yang sama untuk masukan yang sama dan tidak memiliki efek samping. Fungsi tersebut tidak membaca atau menulis keadaan eksternal, mengubah argumennya, atau melakukan masukan/keluaran.
Contoh Fungsi Murni
Fungsi ini hanya bergantung pada argumennya dan hanya menghasilkan nilai kembalian. Memanggilnya tidak pernah mengubah apa pun di luar fungsi.
function add(a: number, b: number): number {
return a + b;
}
console.log(add(2, 3)); // 5, alwaysContoh Fungsi Tidak Murni
Fungsi ini membaca dan mengubah variabel di luar cakupannya, sehingga hasilnya bergantung pada keadaan tersembunyi dan meninggalkan jejak. Itulah yang membuatnya tidak murni.
let counter = 0;
function next(): number {
counter += 1; // side effect
return counter;
}
console.log(next(), next()); // 1 2, depends on historyTransparansi Referensial
Panggilan murni bersifat transparan secara referensial: Anda dapat mengganti panggilan tersebut dengan hasilnya tanpa mengubah program. add(2, 3) dapat diganti dengan 5 di mana saja.
const x = add(2, 3) * 2;
const y = 5 * 2; // identical meaning
console.log(x === y); // trueMengapa Kemurnian Membantu
Fungsi murni mudah diuji (tanpa persiapan), mudah disimpan di tembolok, aman dijalankan secara paralel, dan mudah dipahami karena tidak memiliki dependensi tersembunyi.
Hindari Mengubah Argumen
Mengubah larik atau objek masukan adalah efek samping yang mungkin tidak diharapkan oleh pemanggil. Sebagai gantinya, buat dan kembalikan nilai baru.
// 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]; }Pembaruan yang Tidak Dapat Diubah dengan Operator Sebar
Operator sebar menyalin objek atau larik, sehingga Anda dapat menimpa bidang tanpa menyentuh objek asli. Ini adalah alat utama untuk pembaruan yang tidak dapat diubah 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 31Memperbarui Larik Tanpa Mengubahnya
Gunakan map, filter, dan sebaran untuk menghasilkan larik baru, bukan mengubah larik yang ada. Larik asli tetap utuh agar dapat digunakan oleh kode 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 Keamanan
Menandai parameter sebagai readonly memberi tahu kompiler dan pembaca bahwa fungsi tidak akan mengubahnya, sehingga kemurnian diperkuat pada tingkat tipe.
function sum(xs: readonly number[]): number {
return xs.reduce((a, b) => a + b, 0);
}
console.log(sum([1, 2, 3])); // 6Mendorong Efek ke Tepi Program
Program nyata memerlukan efek seperti pencatatan dan jaringan. Gaya fungsional menjaga inti tetap murni dan mengisolasi efek pada batas-batas program, sehingga sebagian besar kode tetap dapat diprediksi.
Daftar Periksa Mental
Untuk setiap fungsi, tanyakan: apakah fungsi tersebut hanya bergantung pada masukannya? Apakah hanya mengembalikan suatu nilai? Apakah membiarkan masukan dan dunia luar tetap tidak berubah? Tiga jawaban ya berarti fungsi tersebut murni.
Pemeriksaan Singkat
Pemeriksaan singkat tentang pelajaran ini.
Rangkuman
Fungsi murni hanya bergantung pada masukan dan tidak menghasilkan efek samping, sehingga memberikan transparansi referensial. Gunakan operator sebar, map/filter, dan readonly untuk pembaruan yang tidak dapat diubah, lalu dorong efek dunia nyata ke tepi program.
Belajar TypeScript dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 101
- Pelajaran
- 352
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Fungsi Murni dan Imutabilitas” gratis?
Ya — teks lengkap “Fungsi Murni dan Imutabilitas” 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 “Fungsi Murni dan Imutabilitas”?
Tulis fungsi yang dapat diprediksi tanpa efek samping. 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 1 dari 4.
Berapa lama pelajaran “Fungsi Murni dan Imutabilitas” 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
- Fungsi Murni dan Imutabilitas
- Currying dan Penerapan Parsial
- Komposisi Fungsi dengan Jenis
- Utilitas pipe dan flow Bertipe