0Pricing
TypeScript Academy · Ders

Tür Güvenli Hizmet Belirteçleri

Çalışma zamanındaki çözümleme hatalarını önlemek için türleri belirlenmiş belirteçler kullanın.

Tür Güvenli Hizmet Belirteçleri, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 4. 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.

Dize Belirteci Sorunu

"Logger" gibi dize belirteçlerinde yazım hatası yapmak kolaydır ve bunlar tür bilgisi taşımaz. Kapsayıcı, get("Loggr") ifadesinin hatalı olduğunu size bildiremez ve çözümlenen tür çoğu zaman any olur.

Belirteç Olarak Semboller

Dizeler yerine semboller kullanmak, her belirtece başka bir belirteçle yanlışlıkla çakışamayacak benzersiz bir kimlik verir. Merkezi bir kayıt, bunların düzenli tutulmasını sağlar.

const TYPES = {
  Logger: Symbol.for("Logger"),
  Mailer: Symbol.for("Mailer"),
} as const;

Belirteçleri Türlerle Eşleme

Asıl amaç, her belirteci çözümleneceği türle ilişkilendirmektir; böylece kapsayıcı any yerine doğru türü döndürür. Tür bilgili bir belirteç sarmalayıcısı oluşturacağız.

interface Token<T> {
  readonly id: symbol;
  readonly _type?: T; // phantom type marker
}

Tür Bilgili Belirteçler Oluşturma

Bir yardımcı, türünü hayalet bir alanda saklayan bir belirteç üretir. Alan hiçbir zaman değer taşımaz; yalnızca derleyici için tür bilgisi taşır.

function token<T>(name: string): Token<T> {
  return { id: Symbol.for(name) };
}
const LoggerToken = token<Logger>("Logger");

Tür Bilgili Kapsayıcı Arayüzü

Kapsayıcıyı, get işleminin çözümlenen türü belirteçten çıkarsayacağı şekilde türlendiririz. Elle tür dönüştürme yok, any yok.

interface TypedContainer {
  get<T>(t: Token<T>): T;
  bind<T>(t: Token<T>, impl: () => T): void;
}

Çıkarılan Türlerle Bağlama

Bağlama yaparken fabrikanın dönüş türü, belirtecin türüyle eşleşmelidir. Eşleşmeyen türler derleme zamanında yakalanır.

declare const c: TypedContainer;
c.bind(LoggerToken, () => new ConsoleLogger());
// ConsoleLogger must satisfy Logger or this errors.

Tam Türlerle Çözümleme

Artık get, tam olarak belirtecin türünü döndürür. Sonuç üzerinde otomatik tamamlama ve tür denetimi, elle açıklama yazmadan çalışır.

const logger = c.get(LoggerToken); // type: Logger
logger.log("typed resolution");

Arama Hatalarından Kaçınma

Belirteçler tür bilgili değerler olduğundan, bir yazım hatası sessizce yanlış bir dizeye değil, tanımsız bir değişkene başvurur ve derleme hatasına yol açar. Dize anahtarı hatalarının tamamı ortadan kalkar.

// c.get(LogerToken) -> compile error: LogerToken is not defined

InversifyJS Karşılığı

Inversify, sembol belirteçlerini de destekler ve topluluk yardımcıları tür bilgili sarmalayıcılar ekler. İlke aynıdır: tür bilgili bir belirteci bir uygulamaya bağlamak ve doğru türle çözümlemek.

import { Container } from "inversify";
const TYPES = { Logger: Symbol.for("Logger") };
// container.bind<Logger>(TYPES.Logger).to(ConsoleLogger)

Belirteç Kaydı

Belirteçleri tek bir modülde merkezileştirmek, tek bir doğruluk kaynağı sağlar; böylece bunları kod tabanının tamamında keşfetmek, yeniden düzenlemek ve tutarlı tutmak kolaylaşır.

export const TOKENS = {
  Logger: token<Logger>("Logger"),
  Mailer: token<Mailer>("Mailer"),
};

Yararların Özeti

Tür bilgili belirteçler benzersiz kimlik (semboller), derleme zamanı güvenliği (eşleşmeyen türlerin reddedilmesi), doğru çözümlenen türler (any yok) ve yazım hatalarına karşı koruma (tanımsız değişken hataları) sağlar.

Hızlı Kontrol

Bu dersle ilgili hızlı bir kontrol.

Özet

Tür güvenli hizmet belirteçleri, benzersiz bir symbol ile hayalet türü bir araya getirerek her belirteci çözümleneceği türle eşler. get kesin türü döndürür, bağlama eşleşen uygulamaları zorunlu kılar ve yazım hataları sessiz dize araması hataları yerine derleme hatalarına dönüşür.

Sıkça Sorulan Sorular

“Tür Güvenli Hizmet Belirteçleri” dersi ücretsiz mi?

Evet — “Tür Güvenli Hizmet Belirteçleri” 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.

“Tür Güvenli Hizmet Belirteçleri” dersinde ne öğreneceğim?

Çalışma zamanındaki çözümleme hatalarını önlemek için türleri belirlenmiş belirteçler kullanı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 4. dersidir.

“Tür Güvenli Hizmet Belirteçleri” 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