TypeScript Academy · Ders

Tür Düzeyi DSL Nedir?

Akıcı bir API'yi geçerli programlarla sınırlandırmak için türleri kullanın.

1. ders / 413 adım

Tür Düzeyi DSL Nedir?, 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.

Tür Düzeyinde DSL Nedir

Tür düzeyindeki DSL (alana özgü dil), bir API'yi yalnızca geçerli programların derlenmesine izin verecek şekilde kısıtlamak için TypeScript türlerini kullanır. Türler bir gramer görevi görür: geçersiz birleşimler, kod hiç çalışmadan önce reddedilir.

Gömülü DSL'ler

Gömülü bir DSL, ayrı bir ayrıştırıcı yerine barındıran dilin (burada TypeScript) içinde yaşar. Sıradan TS yazarsınız, ancak tür sistemi DSL kurallarını uygular.

Tanıdık Bir Örnek

Tür düzeyindeki DSL'leri zaten kullandınız: yalnızca geçerli sütun adlarına izin veren bir sorgu oluşturucu veya bir yoldan parametreleri çıkaran bir yönlendirici. Türler, API'nin neleri kabul ettiğini kodlar.

Akıcı API'yi Kısıtlama

Temel fikir şudur: her yöntem, bir sonraki adımda hangi yöntemleri çağırabileceğinizi sınırlayan bir tür döndürür. İşlemleri yanlış sırada çağırmak derleme hatasına neden olur.

interface Empty { from(t: string): HasFrom; }
interface HasFrom { where(c: string): HasFrom; select(): string; }

declare const q: Empty;
q.from("users").select();      // ok
q.select();                    // Error: select not on Empty

Türlerde Durum Makineleri

Bu örüntü bir tür düzeyinde durum makinesidir: her arayüz bir durum, her yöntem de başka bir duruma geçiştir. Derleyici, çağrıları zincirlerken makine üzerinde ilerler.

Neden Yalnızca Çalışma Zamanı Denetimleri Kullanılmasın

Çalışma zamanı denetimleri kullanıcılar varken üretimde geç başarısız olur. Tür düzeyindeki bir DSL ise kod yayımlanmadan önce, editörde kırmızı dalgalı alt çizgiyle erken başarısız olur. Kurallar aynıdır, ancak geri bildirim çok daha düşük maliyetlidir.

Hayalet Tür Parametreleri

DSL'ler bilgiyi genellikle hayalet tür parametrelerinde taşır: birikmiş durumu (seçilen sütunlar, bağlanmış değişkenler) çalışma zamanı maliyeti olmadan izlemek için yalnızca derleme zamanında var olan jenerikler.

interface Query<Selected extends string> {
  select<C extends string>(c: C): Query<Selected | C>;
}

Belirteç Olarak Değişmez Türler

Dize değişmez türleri DSL belirteçleri olarak görev yapar. Şablon değişmezleri ve birleşimlerle birlikte kullanıldıklarında, tür sisteminin DSL'nizin metinsel içeriği hakkında akıl yürütmesini sağlarlar.

type Direction = "asc" | "desc";
declare function orderBy(col: string, dir: Direction): void;
orderBy("age", "asc");   // ok
orderBy("age", "up");    // Error: not a Direction

Yapı Taşları

Tür düzeyindeki DSL'ler şunları birleştirir: durum için jenerikler, dallanma için koşullu türler, dizeleri ayrıştırmak için şablon değişmezleri ve yapıları dönüştürmek için eşlemeli türler. İlerleyen derslerde bunların her birini kullanacaksınız.

Ödünler

Tür düzeyindeki DSL'ler güçlü güvenceler sağlar, ancak aşırı kullanıldıklarında anlaşılması güç hatalar üretebilir ve derlemeleri yavaşlatabilir. İyi DSL'ler güvenliği okunabilir hata iletileriyle dengeler; ilerideki bir ders bu konuyu ele alır.

Bunun Önemi

Alan kurallarını türlerde kodlamak, derleyiciyi alan uzmanına dönüştürür: anlamsız ifadeleri otomatik olarak reddeder. Sorgu oluşturucuların, form kitaplıklarının ve etki sistemlerinin bu kadar güçlü güvenceler sunmasının yolu budur.

Hızlı Kontrol

Tür düzeyindeki DSL'ler konusundaki anlayışınızı sınayın.

Özet

Tür düzeyindeki bir DSL, yalnızca geçerli programların derlenmesi için TypeScript türlerini bir gramer olarak kullanır. Akıcı API'ler, her yöntemin durumu kısıtlayan bir tür döndürdüğü durum makinelerini modeller. Hayalet jenerikler, değişmez tür belirteçleri, koşullu, şablon değişmezli ve eşlemeli türler yapı taşları olarak kullanılır; böylece editör zamanında erken geri bildirim sağlanır.

Başlamak ücretsiz

Yapay zeka eğitmeniyle TypeScript öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
101
Dersler
352

Sıkça Sorulan Sorular

“Tür Düzeyi DSL Nedir?” dersi ücretsiz mi?

Evet — “Tür Düzeyi DSL Nedir?” 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 Düzeyi DSL Nedir?” dersinde ne öğreneceğim?

Akıcı bir API'yi geçerli programlarla sınırlandırmak için türleri 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 1. dersidir.

“Tür Düzeyi DSL Nedir?” 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. Tür Düzeyi DSL Nedir?
  2. Akıcı Sorgu DSL'si Tasarlama
  3. Derleme Zamanında Girdi Doğrulama
  4. Tür Düzeyi DSL'lerde Hata Mesajları
← TypeScript Academy Sayfasına Dön