Tür Genişletme ve Daraltma Mekanizmaları
TypeScript'in türleri nasıl genişlettiğini ve bunu ne zaman önleyeceğinizi öğrenin
Tür Genişletme ve Daraltma Mekanizmaları, 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 Genişlemesi Nedir?
Tür genişlemesi, TypeScript'in yazdığınızdan daha geniş bir tür çıkarsaması durumudur. let x = "hello" ataması, değişmez "hello" yerine string türüne genişler.
let x = "hello"; // inferred: string, not "hello"
let y = 42; // inferred: number, not 42let ve const ile Genişleme
const ile bildirilen değişkenler yeniden atanamadıkları için değişmez türlerini korur. let temel türe genişler.
const a = "world"; // type: "world"
let b = "world"; // type: stringTür Belirtimleriyle Genişlemeyi Önleme
let değişkenine açıkça tür belirtmek, genişlemeyi önler ve değişmez türü sabitler.
let direction: "left" | "right" = "left";
// direction = "up"; // Error: not assignabletypeof ile Daraltma
TypeScript, typeof denetimleri içinde birleşim türünü daraltarak ilgili dalda kesin bir tür sağlar.
function format(val: string | number) {
if (typeof val === "string") {
return val.toUpperCase(); // val: string here
}
return val.toFixed(2); // val: number here
}Eşitlik Denetimleriyle Daraltma
Değişmez değerlere karşı yapılan eşitlik denetimleri de ilgili dalın içinde türü daraltır.
type Direction = "left" | "right" | "up";
function handle(dir: Direction) {
if (dir === "left") {
console.log("Going left"); // dir: "left"
}
}Denetim Akışı Analizi
TypeScript, atamaları denetim akışı boyunca izler ve her daldan sonra türü daraltır.
function process(x: string | null) {
if (x === null) return;
// x is string here — TypeScript knows null is ruled out
console.log(x.length);
}Nesne Değişmezlerinde Genişleme
as const kullanmadığınız sürece nesne değişmezi özellik değerleri de genişletilir.
const config = { mode: "dark" };
// config.mode: string (widened)
const config2 = { mode: "dark" } as const;
// config2.mode: "dark" (literal)Tazelik ve Genişleme
Bir nesne değişmezini doğrudan tür belirtilmiş bir değişkene atadığınızda TypeScript fazla özellik denetimi uygular — ancak nesne adlandırılmış bir değişkene genişletildikten sonra bu denetim artık uygulanmaz.
interface Options { timeout: number; }
const opts = { timeout: 3000, retry: true };
// No error — widened type, excess property check skipped
const o: Options = opts;in İşleciyle Daraltma
in işleci, bir özelliğin var olup olmadığını denetleyerek nesne birleşimi türlerini daraltır.
type Cat = { meow(): void };
type Dog = { bark(): void };
function speak(animal: Cat | Dog) {
if ("meow" in animal) animal.meow();
else animal.bark();
}Doğrulama İşlevleriyle Daraltma
Doğrulama işlevleri, çağrıdan sonra türü daraltmak için asserts condition dönüş türlerini kullanır.
function assertString(val: unknown): asserts val is string {
if (typeof val !== "string") throw new Error("Expected string");
}
const x: unknown = "hi";
assertString(x);
x.toUpperCase(); // OK — narrowed to stringÖzet: Genişletme ve Daraltma
Genişletme, esneklik sağlamak için çıkarılan türleri genişletir; daraltma ise koşullu bir dal içinde geniş bir türü kesin bir türe dönüştürür. Her ikisini anlamak daha güvenli TypeScript kodu yazmanıza yardımcı olur.
Hızlı Kontrol
Hangi bildirim temel türe genişlemeyi önler?
Öğrendikleriniz
Artık tür genişlemesini (TypeScript'in çıkarılan türleri nasıl genişlettiğini) ve daraltmayı (koşullu denetimlerin nasıl kesin türler ürettiğini) anlıyorsunuz. Genişlemeyi önlemek için as const, birleşim türlerini güvenle daraltmak için de denetim akışı denetimlerini kullanın.
Sıkça Sorulan Sorular
“Tür Genişletme ve Daraltma Mekanizmaları” dersi ücretsiz mi?
Evet — “Tür Genişletme ve Daraltma Mekanizmaları” 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 Genişletme ve Daraltma Mekanizmaları” dersinde ne öğreneceğim?
TypeScript'in türleri nasıl genişlettiğini ve bunu ne zaman önleyeceğinizi öğrenin 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 Genişletme ve Daraltma Mekanizmaları” 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
- Tür Genişletme ve Daraltma Mekanizmaları
- Bağlamsal Türlendirme: Bağlamdan Çıkarım
- Tazelik ve Fazladan Özellik Denetimi
- const Doğrulamaları ve as const