unknown ve any'yi Anlama
unknown neden any için tür güvenli bir alternatiftir?
unknown ve any'yi Anlama, 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.
İki Üst Düzey Tür
TypeScript, herhangi bir değeri tutabilen iki türe sahiptir: any ve unknown. Benzer görünürler ancak çok farklı davranırlar. Doğru olanı seçmek, tür güvenli kod yazmanın temel becerilerindendir.
let a: any = 5;
let u: unknown = 5;
console.log(a, u);any Tür Denetimini Devre Dışı Bırakır
any, o değer için tür denetleyicisini kapatan bir kaçış yoludur. Herhangi bir özelliğe erişebilir veya değeri işlev olarak çağırabilirsiniz; çalışma zamanında çökmeye yol açacak olsa bile derleyici sessiz kalır.
const a: any = 'hello';
console.log(a.toUpperCase()); // OK
// a.doesNotExist(); // no compile error, but crashes at runtimeunknown Denetim Yapmaya Zorlar
unknown da her değeri kabul eder, ancak ne olduğunu kanıtlayana kadar onu kullanamazsınız. Derleyici, türü daraltana kadar özellik erişimini ve çağrıları engeller.
const u: unknown = 'hello';
// console.log(u.toUpperCase()); // Error: u is unknown
console.log(typeof u);typeof ile unknown Türünü Daraltma
Bir typeof koruması, blok içinde unknown türünü somut bir türe daraltır. Daraltıldıktan sonra o türe ait tüm yöntemler güvenli biçimde kullanılabilir.
function shout(value: unknown): string {
if (typeof value === 'string') {
return value.toUpperCase(); // safe here
}
return 'not a string';
}
console.log(shout('hi'), shout(42));unknown Neden Daha Güvenli
unknown, dürüst bir belirsizliği ifade eder: “Bunun ne olduğunu henüz bilmiyorum.” Kullanımdan önce doğrulama yapmaya yönlendirerek hataları derleme zamanında yakalar. any ise belirsizliği ve hataları yalnızca gizler.
function len(value: unknown): number {
if (typeof value === 'string') return value.length;
if (Array.isArray(value)) return value.length;
return 0;
}
console.log(len('abc'), len([1, 2]), len(99));unknown'a ve unknown'dan Atama
Herhangi bir değer unknown'a atanabilir. Ancak unknown, daraltma yapılmadan belirli türlere değil, yalnızca unknown veya any türlerine atanabilir. Onu güvenli tutan asimetri budur.
let u: unknown = 10;
u = 'now a string';
u = true;
const anyVal: any = u; // allowed
console.log(anyVal);
// const s: string = u; // Errorany Kodunuza Yayılır
any türünün tehlikeli bir özelliği yayılmasıdır. Bir değer any olduğunda, ondan türetilen her şey de sessizce any olur ve programınız genelinde tür güvenliğini aşındırır.
const a: any = { count: 5 };
const total = a.count + 10; // total is any
const flag = total.whatever; // still any, no error
console.log(total);unknown Riski Sınırlar
unknown ile belirsizlik bulunduğu yerde kalır. Her sınırda açıkça daraltma yapmanız gerekir; böylece güvenli olmayan işlemler başka yerlere sızamaz. Risk, ait olduğu yerde tutulur.
const u: unknown = { count: 5 };
if (typeof u === 'object' && u !== null && 'count' in u) {
console.log('Has count property');
}API ve JSON Sınırlarını Türlendirme
Harici verilerin — JSON, ağ yanıtları ve kullanıcı girdisi — hiçbir garantisi yoktur. Bunları any yerine unknown olarak türlendirmek, onlara güvenmeden önce doğrulama yapmaya zorlar; güvenli varsayılan budur.
function parse(text: string): unknown {
return JSON.parse(text);
}
const data = parse('{"id":1}');
if (typeof data === 'object' && data !== null) {
console.log('Got an object');
}any Ne Zaman Kabul Edilebilir
any bazen pragmatik bir seçimdir: hızlı prototipler, JavaScript'ten kademeli geçiş veya türlendirilmemiş kütüphanelerle birlikte çalışabilirlik için kullanılabilir. Ancak onu alışkanlık olarak değil, geçici bir işaret olarak değerlendirin. Mümkün olduğunda unknown'ı tercih edin.
// Migration placeholder, to be typed later
let legacy: any = getLegacyValue();
function getLegacyValue() { return { x: 1 }; }
console.log(legacy.x);Uygulamalı Bir Karşılaştırma
Yan yana karşılaştırıldığında: any sürümü derlenir ancak çökmeye yol açabilir; unknown sürümü ise güvenli olmayan erişimin derlenmesine izin vermez. Derleyici görevini yaparak sizi korur.
const a: any = 42;
console.log(a.toFixed(2)); // OK by luck
const u: unknown = 42;
if (typeof u === 'number') {
console.log(u.toFixed(2)); // checked, safe
}Kısa Kontrol
unknown ve any konusundaki anlayışınızı sınayın.
Özet: unknown ve any
Temel noktalar:
any, tür denetimini devre dışı bırakır ve türetilen değerlere yayılır.unknownher değeri kabul eder ancak siz onu daraltana kadar kullanılmasını engeller.- Doğrulamayı zorunlu kılmak için harici verilerde (JSON, API'ler, kullanıcı girdisi)
unknownkullanın. anytürünü geçici bir işaret olarak geçiş veya türlendirilmemiş birlikte çalışabilirlik için ayırın.
Sırada boş türü, yani never türünü inceleyeceğiz.
function safeLen(v: unknown): number {
return typeof v === 'string' ? v.length : 0;
}
console.log(safeLen('hello'), safeLen(123));Sıkça Sorulan Sorular
“unknown ve any'yi Anlama” dersi ücretsiz mi?
Evet — “unknown ve any'yi Anlama” 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.
“unknown ve any'yi Anlama” dersinde ne öğreneceğim?
unknown neden any için tür güvenli bir alternatiftir? 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.
“unknown ve any'yi Anlama” 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
- unknown ve any'yi Anlama
- never Türü ve İmkânsız Durumlar
- İşlevlerde void Türü
- unknown Türünü Tür Güvenli Şekilde Ele Alma