0Pricing
TypeScript Academy · Ders

Tür Düzeyinde Dize Bölme

Dizeleri tür sistemi içinde demetlere ayırın.

Tür Düzeyinde Dize Bölme, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 2. 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.

Şablon Değişmezi Türleri

Tür sistemi, şablon değişmezi türlerini infer ile birleştirerek dize değişmezi türleri üzerinde kalıp eşleştirmesi yapabilir. Bu, tür düzeyinde dize ayrıştırmanın temel aracıdır.

Gösterim: Gerçek TypeScript, şablon değişmezi türlerini dolar-süslü parantez boşlukları içeren, ters tırnaklarla sınırlandırılmış dizeler olarak yazar. Bu parçalarda bu kalıbı Tpl<...> biçiminde gösteriyor ve her bölümü sırayla listeliyoruz; örneğin, önce değişmez ön ekle ve ardından Rest ile eşleşen bir ters tırnak şablonu Tpl<'prefix', infer Rest> olarak gösterilir.

type StartsWithA<S> = S extends Tpl<'a', string> ? true : false;
// Tpl<'a', string> is a backtick template literal type: 'a' then anything

type X = StartsWithA<'abc'>; // true
type Y = StartsWithA<'bcd'>; // false

Son Ek Çıkarma

Dizenin bir bölümünü yakalamak için şablonun içine infer yerleştirin. Burada, başta bulunan "a" sonrasındaki her şeyi yakalıyoruz.

type AfterA<S> = S extends Tpl<'a', infer Rest> ? Rest : never;
// Tpl<'a', Rest> captures everything after a leading 'a'

type X = AfterA<'abc'>; // 'bc'

Ayraçta Bölme

Bir dizeyi ayırıcının ilk geçtiği yerde bölmek için "baş, ayırıcı, kuyruk" kalıbını eşleştirin ve her iki tarafı da çıkarın. İlk eşleşme seçilir; çünkü baş kısmı için çıkarım soldan açgözlü yapılır.

type SplitOnce<S, Sep extends string> =
  S extends Tpl<infer Head, Sep, infer Tail>
    ? [Head, Tail]
    : [S];
// Tpl<Head, Sep, Tail> matches up to the first separator

type X = SplitOnce<'a-b-c', '-'>; // ['a', 'b-c']

Özyinelemeli Bölme

Tüm bölümleri ayırmak için kuyruk üzerinde özyinelemeli çağrı yapın. Ayırıcı kalmayana kadar her baş kısmını bir demette toplayın.

type Split<S extends string, Sep extends string> =
  S extends Tpl<infer Head, Sep, infer Tail>
    ? [Head, ...Split<Tail, Sep>]
    : [S];
// recurse on Tail until no separator remains

type X = Split<'a.b.c', '.'>; // ['a', 'b', 'c']

Özyinelemeyi İzleme

Split<"a.b.c", "."> çağrısını izleyin:

  • Baş "a", Kuyruk "b.c" -> ["a", ...Split<"b.c">]
  • Baş "b", Kuyruk "c" -> ["b", ...Split<"c">]
  • "c" içinde "." yok, temel durum -> ["c"]

Sonuç: ["a", "b", "c"].

type X = Split<"one,two", ",">; // ["one", "two"]
type Y = Split<"x/y/z", "/">; // ["x", "y", "z"]

Boş Bölümleri Ele Alma

Ayırıcılar bitişik olduğunda veya dizenin kenarlarında bulunduğunda bölme işlemi boş dizeler üretebilir. Kalıp yine de eşleşir ve boş bir Head veya Tail çıkarır.

type X = Split<"a,,b", ",">; // ["a", "", "b"]
type Y = Split<",a", ",">;   // ["", "a"]

Geri Birleştirme

Bölmenin tersi birleştirmedir: bir dize demetini dolaşın ve bir şablon değişmezi kullanarak ayraçla birleştirin. Bu işlem bölmeyle doğal bir ikili oluşturur.

type Join<T extends string[], Sep extends string> =
  T extends [infer H extends string, ...infer R extends string[]]
    ? R extends [] ? H : Tpl<H, Sep, Join<R, Sep>>
    : '';
// Tpl<...> denotes a template literal type concatenation

type X = Join<['a', 'b', 'c'], '-'>; // 'a-b-c'

Boşlukları Kırpma

Dize yardımcıları birlikte kullanılabilir. Bir Trim türü, şablon çıkarımı yoluyla baştaki ve sondaki boşlukları tekrar tekrar kaldırarak temizler.

type TrimLeft<S extends string> =
  S extends Tpl<' ', infer R> ? TrimLeft<R> : S;
type TrimRight<S extends string> =
  S extends Tpl<infer R, ' '> ? TrimRight<R> : S;
type Trim<S extends string> = TrimRight<TrimLeft<S>>;
// Tpl<' ', R> strips a leading space; Tpl<R, ' '> strips a trailing one

type X = Trim<'  hi  '>; // 'hi'

Alt Dizeleri Değiştirme

Değiştirme işlemi, hedefin çevresinde bölme yapıp sonucu yenisiyle yeniden birleştirerek gerçekleştirilir; tüm süreç şablon çıkarımı ve özyineleme kullanır.

type ReplaceAll<S extends string, From extends string, To extends string> =
  S extends Tpl<infer A, From, infer B>
    ? Tpl<A, To, ReplaceAll<B, From, To>>
    : S;
// split around From, then rejoin with To via template literal types

type X = ReplaceAll<'a-b-c', '-', '_'>; // 'a_b_c'

Bölmenin Önemi

Bölme, yapılandırılmış ayrıştırmanın temelidir. Rotalar "/" üzerinde, sorgu dizeleri "&" üzerinde, CSV satırları ise "," üzerinde bölünür. Split ile düz bir dize türünü, öğe öğe işleyebileceğiniz bir demete dönüştürürsünüz.

type Segments = Split<"users/42/posts", "/">; // ["users", "42", "posts"]

Derinlik Konusunda Dikkat

Tür düzeyindeki dize özyinelemesi, derleyicinin derinlik sınırıyla kısıtlanır. Çok uzun dizeler veya çok sayıda ayraç bu sınırı aşabilir. Tipik girdilerde (yollar ve küçük biçimler) sorunsuz çalışır.

type Ok = Split<"a/b/c/d/e", "/">; // fine for small strings

Hızlı Kontrol

Tür düzeyinde dize bölme konusundaki anlayışınızı sınayın.

Özet

Dizeleri tamamen türler içinde böldünüz.

  • Şablon değişmezi türleri ile infer, dize bölümleriyle eşleşip bunları yakalar.
  • SplitOnce ilk ayraçta bölme yapar; özyineleme tam bir Split sonucu üretir.
  • Join, Trim ve ReplaceAll aynı araçlarla birlikte oluşturulur.

Sıradaki konu: dize türlerinden yapılandırılmış veri çıkarmak.

Sıkça Sorulan Sorular

“Tür Düzeyinde Dize Bölme” dersi ücretsiz mi?

Evet — “Tür Düzeyinde Dize Bölme” 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üzeyinde Dize Bölme” dersinde ne öğreneceğim?

Dizeleri tür sistemi içinde demetlere ayırı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 2. dersidir.

“Tür Düzeyinde Dize Bölme” 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. Ayrıştırıcı Birleştirici Kavramları
  2. Tür Düzeyinde Dize Bölme
  3. Şablon Değişmezleriyle Ayrıştırma
  4. Mini Tür Düzeyi Rota Ayrıştırıcısı
← TypeScript Academy Sayfasına Dön