0Pricing
TypeScript Academy · Ders

Denetimin Tersine Çevrilmesinin Temelleri

Bağımlılıkları neden ve ne zaman tersine çevirmeniz gerektiğini anlayın.

Denetimin Tersine Çevrilmesinin Temelleri, 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.

Koda Gömülü Bağımlılıklar

Bir sınıf, kendi yardımcı bileşenlerini new ile oluşturduğunda bu somut türlere sıkı sıkıya bağlanır. Bu durum, sınıfı yeniden yapılandırmayı ve sınamayı zorlaştırır.

Sıkı Bağlı Bir Örnek

Burada hizmet kendi logger bileşenini oluşturur. Sınıfı düzenlemeden farklı bir logger bileşeni kullanmanın hiçbir yolu yoktur.

class ConsoleLogger { log(m: string) { console.log(m); } }
class OrderService {
  private logger = new ConsoleLogger(); // hard-coded
  place() { this.logger.log("order placed"); }
}
new OrderService().place();

Denetimin Tersine Çevrilmesi Nedir

Denetimin Tersine Çevrilmesi (IoC), bağımlılıklara kimin karar verdiğini değiştirir. Bir sınıfın bunları oluşturması yerine, dışarıdaki bir unsur bunları sağlar. Sınıf neye ihtiyaç duyduğunu bildirir ve onu teslim alır.

Bağımlılık Enjeksiyonu

Bağımlılık Enjeksiyonu (DI), IoC'yi gerçekleştirmenin yaygın yoludur: yardımcı bileşenleri içeride oluşturmak yerine dışarıdan aktarın. Hangi gerçeklemenin kullanılacağını çağıran belirler.

Enjekte Edilen Sürüm

Artık logger bileşeni dışarıdan sağlanır. Hizmet, hangi somut logger bileşenini aldığını artık bilmez ve bunu önemsemez.

class OrderService {
  constructor(private logger: { log(m: string): void }) {}
  place() { this.logger.log("order placed"); }
}
new OrderService(new ConsoleLogger()).place();

IoC Sınanabilirliği Nasıl Geliştirir

Bağımlılıklar dışarıdan geldiği için sınamalar sahte nesneler veya gözetleyiciler aktarabilir. Gerçek giriş/çıkış işlemleri, veritabanları veya ağ çağrıları olmadan davranışı doğrulayabilirsiniz.

const calls: string[] = [];
const fakeLogger = { log: (m: string) => calls.push(m) };
new OrderService(fakeLogger).place();
console.log(calls); // ["order placed"]

Soyutlamalara Bağlanın

IoC, sınıflar somut bir sınıf yerine bir arayüze bağlandığında en iyi şekilde çalışır. Arayüzü karşılayan herhangi bir gerçekleme enjekte edilebilir.

interface Logger { log(m: string): void; }
class OrderService {
  constructor(private logger: Logger) {}
}

Kurucu Enjeksiyonu

Kurucu enjeksiyonu, bağımlılıkları kurucu parametreleri olarak aktarır. Bunlar hemen kullanılabilir ve readonly olarak işaretlenebilir; böylece açık ve zorunlu hâle gelirler.

class OrderService {
  constructor(private readonly logger: Logger) {}
}

Özellik Enjeksiyonu

Özellik enjeksiyonu, bir bağımlılığı oluşturma işleminden sonra herkese açık veya değeri atanabilir bir özelliğe yerleştirir. Daha esnektir; ancak nesnenin bağımlılık olmadan geçici olarak var olmasına izin verir.

class OrderService {
  logger!: Logger; // set after construction
  place() { this.logger.log("placed"); }
}
const s = new OrderService();
s.logger = new ConsoleLogger();

Bir Stil Seçme

Zorunlu bağımlılıklar için kurucu enjeksiyonunu tercih edin; çünkü nesne hiçbir zaman yarı oluşturulmuş durumda olmaz. İsteğe bağlı yardımcı bileşenler için veya oluşturma döngülerini kırmak amacıyla özellik enjeksiyonunu kullanın.

IoC Container Ön İzlemesi

Büyük uygulamalarda bağımlılıkları elle bağlamak giderek zahmetli hâle gelir. Bir IoC container, bağımlılıkları oluşturma ve sağlama işini otomatikleştirir. Sonraki derslerde bu konu InversifyJS ile ele alınır.

Kısa Kontrol

Bu ders için kısa bir kontrol.

Özet

Denetimin Tersine Çevrilmesi, bağımlılık oluşturma işini sınıfın dışına taşır; bağımlılık enjeksiyonu ise bunları sınıfa sağlar. Arayüzlere bağlanın, zorunlu bağımlılıklar için kurucu enjeksiyonunu tercih edin ve sahte nesneler enjekte ederek kolayca sınama yapın.

Sıkça Sorulan Sorular

“Denetimin Tersine Çevrilmesinin Temelleri” dersi ücretsiz mi?

Evet — “Denetimin Tersine Çevrilmesinin Temelleri” 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.

“Denetimin Tersine Çevrilmesinin Temelleri” dersinde ne öğreneceğim?

Bağımlılıkları neden ve ne zaman tersine çevirmeniz gerektiğini anlayı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.

“Denetimin Tersine Çevrilmesinin Temelleri” 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. Denetimin Tersine Çevrilmesinin Temelleri
  2. Yapıcı Enjeksiyonu
  3. InversifyJS ile DI Kapsayıcıları
  4. Tür Güvenli Hizmet Belirteçleri
← TypeScript Academy Sayfasına Dön