0Pricing
TypeScript Academy · Ders

Birim karışıklığını önleyen markalı/opak türler

Temel türleri hayalet marka özellikleriyle kesiştirerek birim veya etiket karışıklıklarını önleyin; yalnızca fabrika işlevleriyle oluşturun.

Birim karışıklığını önleyen markalı/opak türler, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 3 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 3 dersten oluşur.

Giriş

Amaç: Birbirine benzeyen değerleri tür düzeyinde birbirinden ayırın. Salt bir number, metreleri saniyelerden ayıramaz; bir marka belirteci bunu sağlayabilir.

  • Sıfır çalışma zamanı yükü
  • Daha güvenli API'ler ve yeniden düzenlemeler
  • Yalnızca fabrikalar aracılığıyla oluşturun

İlkel birimleri markalama

Marka belirteçleri birimleri derleme zamanında birbirinden ayırır; yanlış bağımsız değişken sırası tür denetiminde başarısız olur.

type Meter = number & { readonly __brand: "meter" }
type Second = number & { readonly __brand: "second" }

function meter(n: number): Meter { return n as Meter }
function second(n: number): Second { return n as Second }

const d = meter(100)
const t = second(9)

function speed(dist: Meter, time: Second) { return (dist as number) / (time as number) }

// speed(t, d)  // compile error: brands do not match

Genel marka yardımcısı

Farklı alanlarda genel Brand yardımcısını kullanın: tür bilgili kimlikler, belirteçler, imleçler vb.

type Brand<Tag extends string, T> = T & { readonly __brand: Tag }

type UserId = Brand<"UserId", string>
type OrderId = Brand<"OrderId", string>

function userId(x: string): UserId { return x as UserId }
function orderId(x: string): OrderId { return x as OrderId }

function findUser(id: UserId) { /* ... */ }

const u = userId("u_123")
const o = orderId("o_456")
// findUser(o) // error: OrderId not assignable to UserId

Benzersiz sembol markası

benzersiz sembol markası, ad çakışmalarını ve global ad alanlarına sızmayı önler.

declare const MeterSym: unique symbol

type Meter2 = number & { readonly [MeterSym]: "meter" }

function asMeter2(n: number): Meter2 { return n as Meter2 }

const m2 = asMeter2(5)
// const wrong: Meter2 = 5  // discourage raw assignment; prefer factories

Fabrikalar ve doğrulama

Markayı bir fabrika içinde oluşturun: önce doğrulayın, ardından markalayın ve sonra kullanın. Çağrı noktalarında gelişigüzel as kullanmaktan kaçının.

type NonEmptyString = string & { readonly __brand: "NonEmpty" }

function nonEmpty(s: string): NonEmptyString | null {
  return s.trim().length > 0 ? (s as NonEmptyString) : null
}

function makeSlug(s: NonEmptyString) {
  return (s as string).toLowerCase().replace(/\s+/g, "-")
}

const ok = nonEmpty(" Hello ")
if (ok) { makeSlug(ok) }  // safe: validated & branded first

İpuçları ve dikkat edilmesi gerekenler

En iyi uygulamalar:

  • Marka adlarını kısa ve anlamlı tutun.
  • Markalı değerleri elde etmenin tek yolu olarak fabrikaları dışa açın.
  • Gerekli olmadıkça markaları herkese açık API türlerinde açığa çıkarmayın.
  • Markalar yalnızca tür düzeyindedir: çalışma zamanında ek yük oluşturmaz.

Markalama kontrolü

Hızlı kontrol: Birim/etiket karışıklıklarını hangi desen önler?

Özet

Özet: Markalı/opak türler, birbirine benzeyen değerleri (metreler ve saniyeler, UserId ve OrderId) birbirinden ayırır. Bunları fabrikalar aracılığıyla üretin, API'ler genelinde kullanın ve yanlışlıkla yapılan karışıklıkları ortadan kaldırın.

Sıkça Sorulan Sorular

“Birim karışıklığını önleyen markalı/opak türler” dersi ücretsiz mi?

Evet — “Birim karışıklığını önleyen markalı/opak türler” 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 3 dersten oluşur.

“Birim karışıklığını önleyen markalı/opak türler” dersinde ne öğreneceğim?

Temel türleri hayalet marka özellikleriyle kesiştirerek birim veya etiket karışıklıklarını önleyin; yalnızca fabrika işlevleriyle oluşturun. 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, 3 dersinin 1. dersidir.

“Birim karışıklığını önleyen markalı/opak türler” 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. Birim karışıklığını önleyen markalı/opak türler
  2. Etiketli kimlikler ve alan modelleme kalıpları
  3. Alan modelleme — toplamalar, değişmezler ve hizmetler
← TypeScript Academy Sayfasına Dön