Ana içeriğe geç
Modül 5 · Ders 2 ders 2Kurstaki 10/14~15 min
Modül dersleri (2/2)

Değişmez Türler ve İddialar

TypeScript, değişkenlerin olası değerlerini daraltmak ve gerektiğinde derleyiciyi daha spesifik türleri tanımaya zorlamak için gelişmiş araçlar sağlar.

Değişmez Türler

Değişmez tür, tam ve tek bir değeri temsil eder (örneğin, belirli bir dize veya sayı). Genellikle sendika türleriyle birleştirilirler:

TS
type TrafficLight = 'red' | 'yellow' | 'green';
let light: TrafficLight;

light = 'red'; // OK
light = 'blue'; // Error: "blue" is not assignable to TrafficLight

İddiaları Yazın (as)

Bazen derleme zamanında TypeScript'in bilemeyeceği bir tür hakkında bilgiye sahip olursunuz. Bu durumlarda, as anahtar sözcüğünü kullanarak bir tür iddiası kullanabilirsiniz:

TS
const myCanvas = document.getElementById('main_canvas') as HTMLCanvasElement;

İddia derleyiciye şunu söyler: "Güven bana, bu öğenin bir HTMLCanvasElement olduğunu biliyorum". Çalışma zamanında herhangi bir kontrol veya yayın gerçekleştirmez; yalnızca tür denetleyiciye yardımcı olur.

Sabit İddialar (as const)

const ile bir nesneyi veya diziyi bildirdiğimizde, TypeScript yine de onun dahili özelliklerinin değiştirilmesine izin verir. Sona as const eklendiğinde tüm yapı dondurulur ve salt okunur hale getirilir, tüm özellikler tam olarak gerçek türlerine dönüştürülür:

TS
const colors = ['red', 'green', 'blue'] as const;
// colors[0] = "yellow"; // Error: array is read-only

Şablon Değişmez Türleri

Şablon değişmez türleri, JavaScript şablon dizelerinin üzerine kuruludur ancak tür konumlarında kullanılır. Birden fazla değişmez türün tek bir türde birleştirilmesine izin verirler:

TS
type Size = 'small' | 'large';
type Color = 'red' | 'blue';

// Creates the union: "small-red" | "small-blue" | "large-red" | "large-blue"
type ItemId = `${Size}-${Color}`;

Şablon Değişmez Türlerindeki Dize Yardımcı Programları

TypeScript, Şablon Değişmez Türleri içindeki karakterleri değiştirmek için özel yardımcı program türleri sağlar:

  • Capitalize<StringType>: Dizenin ilk harfini büyük harfe çevirir.
  • Uncapitalize<StringType>: Dizenin ilk harfini kaldırır.
  • Uppercase<StringType>: Dizenin tamamını büyük harfe dönüştürür.
  • Lowercase<StringType>: Dizenin tamamını küçük harfe dönüştürür.
TS
type ActionType = 'click' | 'hover';

// Generates: "onClick" | "onHover"
type EventHandlers = `on${Capitalize<ActionType>}`;

Kendin dene

Alıştırma 1: Yön Değişmez Birliği

Egzersiz#ts.m5.l2.e1
Denemeler: 0Yükleniyor…

Yalnızca 'yukarı', 'aşağı', 'sol' veya 'sağ' dizelerini kabul eden Yön adında bir değişmez tür tanımlayın. Ardından, 'Moving' dizesini ve ardından alınan yönü döndüren move(dir: Direction): string adında bir işlev bildirin.

Düzenleyici yükleniyor…
İpucu göster

Önce | ile ayrılmış dört seçenekle tür takma adını tanımlayın, ardından parametreye ve dönüş türüne açıklama ekleyerek taşıma işlevini bildirin.

3 denemeden sonra çözüm mevcut

Alıştırma 2: JSON.parse ile ilgili iddia

Egzersiz#ts.m5.l2.e2
Denemeler: 0Yükleniyor…

JSON.parse işlevi varsayılan olarak herhangi bir türü döndürür. JSON.parse(json) sonucunun as anahtar sözcüğünü kullanarak type { kullanıcı adı: string } olarak onaylanması için parseUser işlevini değiştirin.

Düzenleyici yükleniyor…
İpucu göster

JSON.parse(json) çağrısından hemen sonra 'as { kullanıcı adı: string }' ifadesini ekleyin.

3 denemeden sonra çözüm mevcut

Alıştırma 3: Etkinlikler için Şablon Literatürleri

Egzersiz#ts.m5.l2.e3
Denemeler: 0Yükleniyor…

Durum ve Eylem türleri göz önüne alındığında, 'Durum-Eylem' biçiminde Olay adlı bir şablon dizesi türü tanımlayın (örneğin, 'açık tıklama').

Düzenleyici yükleniyor…
İpucu göster

Türü ve içindeki ${Status}-${Action} sözdizimini tanımlamak için geri tıklamaları kullanın.

3 denemeden sonra çözüm mevcut

Alıştırma 4: Büyük Harflerle Şablon Değişmez Türü

Egzersiz#ts.m5.l2.e4
Denemeler: 0Yükleniyor…

'Tıklama' veya 'üzerine gelme' olabilen değişmez türde bir Olay tanımlayın. Ardından, büyük harfle yazılan olay adının (ör. 'onClick' veya 'onHover') ardından gelen biçimindeki dizeleri temsil eden bir EventHandler türünü bildirmek için Şablon Değişmez Türlerini kullanın.

Düzenleyici yükleniyor…
İpucu göster

Olayın ilk harfini büyük harf yapmak için şablon değişmezinin içinde Capitalize<Event> öğesini kullanın.

3 denemeden sonra çözüm mevcut