0Pricing
TypeScript Academy · Ders

InversifyJS ile DI Kapsayıcıları

Hizmetleri bir kapsayıcıya kaydedin ve kapsayıcıdan çözümleyin.

InversifyJS ile DI Kapsayıcıları, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 3. 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.

Neden Bir DI Container

Büyük nesne grafiklerini elle bağlamak zahmetli ve hataya açıktır. Bir DI container, her bağımlılığın nasıl oluşturulacağını kaydeder ve bunları otomatik olarak çözümler. InversifyJS, TypeScript için popüler bir container'dır.

Kurulum ve Etkinleştirme

InversifyJS, dekoratörlere ve yansıma meta verilerine dayanır. inversify içinden içe aktarma yapar, experimentalDecorators ile reflect-metadata'yı etkinleştirirsiniz.

import "reflect-metadata";
import { Container, injectable, inject } from "inversify";

Sınıfları @injectable Olarak İşaretleme

@injectable() dekoratörü, container'a bir sınıfın oluşturulup enjekte edilebileceğini bildirir. Container'ın oluşturduğu her sınıfın buna ihtiyacı vardır.

import { injectable } from "inversify";

@injectable()
class ConsoleLogger {
  log(m: string) { console.log(m); }
}

Bağımlılıkları @inject ile Bildirme

Container'a hangi bağlamanın sağlanacağını bildirmek için kurucu parametrelerinde @inject(token) kullanın. Belirteç, bağımlılığı tanımlar.

@injectable()
class OrderService {
  constructor(@inject("Logger") private logger: ConsoleLogger) {}
  place() { this.logger.log("placed"); }
}

Bir Container Oluşturma

Bir Container, uygulamanızın tüm bağlamalarını tutar. Başlangıçta bir tane oluşturup bağımlılıkları ona kaydedersiniz.

import { Container } from "inversify";
const container = new Container();

Bir Arayüzü Gerçeklemeye Bağlama

Akıcı API bind<T>(token).to(Impl), bir belirteci (çoğu zaman bir arayüzü) container'ın örneğini oluşturacağı somut bir sınıfa eşler.

interface Logger { log(m: string): void; }
container.bind<Logger>("Logger").to(ConsoleLogger);

Hizmetleri Çözümleme

container.get<T>(token), istenen hizmeti oluşturur; bağımlılıklarını sizin için yinelemeli olarak oluşturup enjekte eder.

container.bind<OrderService>(OrderService).toSelf();
const svc = container.get<OrderService>(OrderService);
svc.place();

Gerçeklemeleri Değiştirme

Farklı bir logger kullanmak için belirteci başka bir sınıfa yeniden bağlayın. Tüketiciler, somut sınıfa değil belirtece bağlandıkları için değişmeden kalır.

@injectable()
class SilentLogger implements Logger { log() {} }
container.rebind<Logger>("Logger").to(SilentLogger);

Tekil Kapsam

Varsayılan olarak her get çağrısı yeni bir örnek oluşturabilir. Uygulama genelinde tek bir örneği paylaşmak için inSingletonScope() kullanın.

container.bind<Logger>("Logger").to(ConsoleLogger).inSingletonScope();

Container ile Sınama

Sınamalarda yeni bir container oluşturup sahte nesneleri ona bağlayabilirsiniz. Böylece sınanan birimi yalıtırken aynı bağlama avantajlarından yararlanırsınız.

const testContainer = new Container();
testContainer.bind<Logger>("Logger").to(SilentLogger);

Container Kullanımının Bedelleri

Container'lar büyük grafiklerde tekrar eden kodu azaltır; ancak bir bağımlılık, dekoratörler ve dolaylılık ekler. Küçük uygulamalarda elle yapılan kurucu enjeksiyonu çoğu zaman daha anlaşılırdır.

Hızlı Kontrol

Bu dersle ilgili hızlı bir kontrol.

Özet

InversifyJS; @injectable, @inject(token) ve bir Container kullanır. bind<Interface>(token).to(Impl) ile bağlama yaparsınız ve container.get bağımlılık grafiğini otomatik olarak çözümler. reflect-metadata ve dekoratörler gerekir; bunun karşılığında kalıplaşmış kod azalır, dolaylılık artar.

Sıkça Sorulan Sorular

“InversifyJS ile DI Kapsayıcıları” dersi ücretsiz mi?

Evet — “InversifyJS ile DI Kapsayıcıları” 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.

“InversifyJS ile DI Kapsayıcıları” dersinde ne öğreneceğim?

Hizmetleri bir kapsayıcıya kaydedin ve kapsayıcıdan çözümleyin. 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 3. dersidir.

“InversifyJS ile DI Kapsayıcıları” 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