0Pricing
TypeScript Academy · Ders

Saf İşlevler ve Değişmezlik

Yan etkileri olmayan, öngörülebilir işlevler yazın.

Saf İşlevler ve Değişmezlik, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 4 dersten oluşur.

Saf İşlev Nedir?

Saf işlev, aynı girdi için aynı çıktıyı döndürür ve hiçbir yan etkiye sahip değildir. Dış durumu okumaz veya ona yazmaz, bağımsız değişkenlerini değiştirmez ve G/Ç gerçekleştirmez.

Saf Bir Örnek

Bu işlev yalnızca bağımsız değişkenlerine bağlıdır ve yalnızca bir dönüş değeri üretir. Onu çağırmak dışarıdaki hiçbir şeyi değiştirmez.

function add(a: number, b: number): number {
  return a + b;
}
console.log(add(2, 3)); // 5, always

Saf Olmayan Bir Örnek

Bu işlev, kapsamının dışındaki bir değişkeni okur ve değiştirir; bu nedenle sonucu gizli duruma bağlıdır ve geride bir iz bırakır. Bu da onu saf olmaktan çıkarır.

let counter = 0;
function next(): number {
  counter += 1; // side effect
  return counter;
}
console.log(next(), next()); // 1 2, depends on history

Referans Şeffaflığı

Saf bir çağrı referans açısından şeffaftır: programı değiştirmeden çağrıyı sonucu ile değiştirebilirsiniz. add(2, 3) her yerde 5 ile değiştirilebilir.

const x = add(2, 3) * 2;
const y = 5 * 2; // identical meaning
console.log(x === y); // true

Saflık Neden Yararlıdır

Saf işlevlerin sınanması kolaydır (kurulum gerekmez), önbelleğe alınmaları kolaydır, paralel çalıştırılmaları güvenlidir ve gizli bağımlılıkları olmadığından anlaşılmaları basittir.

Bağımsız Değişkenleri Değiştirmekten Kaçınma

Bir girdi dizisini veya nesnesini değiştirmek, çağıranın beklemeyebileceği bir yan etkidir. Bunun yerine yeni bir değer oluşturup döndürün.

// 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]; }

Yayma İşleciyle Değişmez Güncellemeler

Yayma işleci bir nesneyi veya diziyi kopyalamanızı ve özgününe dokunmadan alanları geçersiz kılmanızı sağlar. Bu, TS'teki değişmez güncellemelerin temel aracıdır.

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

Dizileri Değişmez Biçimde Güncelleme

Değiştirmek yerine yeni diziler türetmek için map, filter ve yayma işlemini kullanın. Özgün dizi, diğer kodların güvenebileceği şekilde korunur.

const nums = [1, 2, 3];
const doubled = nums.map(n => n * 2);
console.log(nums, doubled); // [1,2,3] [2,4,6]

Güvenlik İçin readonly

Parametreleri readonly olarak işaretlemek, derleyiciye ve okuyuculara işlevin bunları değiştirmeyeceğini bildirir; böylece saflık tür düzeyinde güçlendirilir.

function sum(xs: readonly number[]): number {
  return xs.reduce((a, b) => a + b, 0);
}
console.log(sum([1, 2, 3])); // 6

Etkileri Sınırlara İtme

Gerçek programların etkilere ihtiyacı vardır (kayıt tutma, ağ iletişimi). İşlevsel yaklaşım çekirdeği saf tutar ve etkileri sınırlarda yalıtır; böylece kodun çoğu öngörülebilir kalır.

Zihinsel Kontrol Listesi

Her işlev için şunları sorun: Yalnızca girdilerine mi bağlı? Yalnızca bir değer mi döndürüyor? Girdileri ve dış dünyayı değiştirmeden mi bırakıyor? Bu üç sorunun yanıtı da evetse işlev saftır.

Hızlı Kontrol

Bu derse ilişkin hızlı bir kontrol.

Özet

Saf işlevler yalnızca girdilere bağlıdır ve hiçbir yan etki üretmez; böylece referans şeffaflığı sağlar. Değişmez güncellemeler için yayma işlemini, map/filter ve readonly kullanın; gerçek dünya etkilerini de programın sınırlarına taşıyın.

Sıkça Sorulan Sorular

“Saf İşlevler ve Değişmezlik” dersi ücretsiz mi?

Evet — “Saf İşlevler ve Değişmezlik” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 4 dersten oluşur.

“Saf İşlevler ve Değişmezlik” dersinde ne öğreneceğim?

Yan etkileri olmayan, öngörülebilir işlevler yazın. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Saf İşlevler ve Değişmezlik” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Saf İşlevler ve Değişmezlik
  2. Kısmi Uygulama ve Curry
  3. Türlerle İşlev Birleştirme
  4. Türleri Belirlenmiş pipe ve flow Yardımcıları
← TypeScript Academy Sayfasına Dön