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
- Denetimin Tersine Çevrilmesinin Temelleri
- Yapıcı Enjeksiyonu
- InversifyJS ile DI Kapsayıcıları
- Tür Güvenli Hizmet Belirteçleri