TypeScript Academy · Ders

unknown Türünü Tür Güvenli Şekilde Ele Alma

unknown değerlerini güvenle kullanmadan önce türlerini daraltın.

4. ders / 413 adım

unknown Türünü Tür Güvenli Şekilde Ele Alma, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 4. 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.

`unknown` ile Güvenli Çalışma

Dış verileri unknown olarak türlendirmek işin yalnızca yarısıdır. Diğer yarısı, kullanmadan önce bu türü somut bir türe daraltmaktır. Bu derste temel daraltma teknikleri ele alınır.

function describe(v: unknown): string {
  if (typeof v === 'string') return 'string: ' + v;
  if (typeof v === 'number') return 'number: ' + v;
  return 'other';
}
console.log(describe('hi'), describe(7), describe(true));

`typeof` ile Daraltma

typeof denetimi en basit araçtır. unknown türünü string, number, boolean, function, object ve diğer ilkel türlere daraltır.

function double(v: unknown): number {
  if (typeof v === 'number') {
    return v * 2; // v is number here
  }
  return 0;
}
console.log(double(21), double('no'));

`instanceof` ile Daraltma

Sınıf örnekleri için instanceof kullanın. Bu, unknown türünü belirli sınıfa daraltarak yöntemlerine ve özelliklerine güvenli biçimde erişmenizi sağlar.

function handle(v: unknown): string {
  if (v instanceof Date) {
    return v.toISOString(); // v is Date
  }
  return 'not a date';
}
console.log(handle(new Date(0)));

`in` İşleciyle Daraltma

in işleci, bir özelliğin nesnede bulunup bulunmadığını denetleyerek nesne türündeki değerleri daraltır. Önce değerin boş olmayan bir nesne olduğunu doğrulayın, ardından anahtarlarını araştırın.

function getName(v: unknown): string {
  if (typeof v === 'object' && v !== null && 'name' in v) {
    return String((v as { name: unknown }).name);
  }
  return 'anonymous';
}
console.log(getName({ name: 'Ada' }), getName(5));

Özel Tür Koruyucuları

Özel tür koruyucusu, dönüş türü value is T olan bir işlevdir. İşlev true döndürdüğünde TypeScript, çağrı konumunda bağımsız değişkeni T türüne daraltır.

function isString(v: unknown): v is string {
  return typeof v === 'string';
}

function shout(v: unknown): string {
  return isString(v) ? v.toUpperCase() : '?';
}
console.log(shout('hey'), shout(9));

Nesne Yapıları İçin Koruyucular

Özel koruyucular, nesne yapılarını doğrularken çok kullanışlıdır. Gerekli tüm alanları denetleyen tek bir işlev yazın; kodunuzun geri kalanı daraltılmış türe güvenebilir.

type User = { id: number; name: string };

function isUser(v: unknown): v is User {
  return typeof v === 'object' && v !== null &&
    'id' in v && 'name' in v;
}
console.log(isUser({ id: 1, name: 'Sam' }), isUser({}));

`JSON.parse` `unknown` Benzeri Veriler Döndürür

JSON.parse, güvenliği sessizce devre dışı bırakan any döndürecek şekilde türlendirilmiştir. En iyi uygulama, sonucu unknown olarak almak ve yapısına güvenmeden önce doğrulamaktır.

function parseConfig(text: string): unknown {
  return JSON.parse(text);
}
const raw = parseConfig('{"port":8080}');
console.log(typeof raw);

Ayrıştırılmış JSON'u Doğrulama

Güvenilmeyen metni türlendirilmiş bir değere güvenli biçimde dönüştürmek için JSON.parse ile bir tür koruyucusunu birleştirin. Doğrulama başarısız olursa hatalı verilere güvenmek yerine hatayı ele alın.

type Config = { port: number };

function isConfig(v: unknown): v is Config {
  return typeof v === 'object' && v !== null &&
    'port' in v && typeof (v as any).port === 'number';
}

const data: unknown = JSON.parse('{"port":8080}');
if (isConfig(data)) console.log('Port:', data.port);

Birden Çok Koruyucuyu Zincirleme

Karmaşık girdiler için koruyucuları katmanlandırın: önce broad yapıyı denetleyin, sonra ayrıntılandırın. Her koruyucu biraz daha daraltarak adım adım kesin ve güvenli türler oluşturur.

function process(v: unknown): string {
  if (Array.isArray(v)) {
    if (v.every((x) => typeof x === 'string')) {
      return v.join('-');
    }
  }
  return 'invalid';
}
console.log(process(['a', 'b']), process([1, 2]));

Geçersiz Verilerde Hata Fırlatma

Gerekli veriler için doğrulama başarısız olduğunda hata fırlatın. Bunu never döndüren bir başarısızlık yardımcısıyla birleştirmek, başarılı yolu temiz ve iyi türlendirilmiş tutar.

function asNumber(v: unknown): number {
  if (typeof v === 'number') return v;
  throw new Error('Expected a number');
}
console.log(asNumber(42));
try { asNumber('x'); } catch (e) { console.log('rejected'); }

Hepsini Bir Araya Getirme

Tam kalıp şöyledir: veriyi unknown olarak alın, koruyucularla daraltın, ardından kesin tür üzerinde çalışın. Bu, türlendirilmemiş dış dünya ile türlendirilmiş kodunuz arasındaki güvenli sınırdır.

type Point = { x: number; y: number };
function isPoint(v: unknown): v is Point {
  return typeof v === 'object' && v !== null &&
    'x' in v && 'y' in v;
}
const input: unknown = { x: 1, y: 2 };
if (isPoint(input)) console.log(input.x + input.y);

Hızlı Denetim

unknown türünü güvenli biçimde ele almayı anlayıp anlamadığınızı sınayın.

Tekrar: `unknown` Türünü Ele Alma

unknown türünü şunlarla daraltmayı öğrendiniz:

  • İlkel türler için typeof, sınıf örnekleri için instanceof.
  • Nesne özellikleri için in işleci.
  • value is T döndüren özel tür koruyucuları.
  • JSON.parse sonuçlarına güvenmeden önce bunları doğrulama.

Sıradaki ders: tür onaylamaları ve tür dönüştürme.

function isNonEmpty(v: unknown): v is string {
  return typeof v === 'string' && v.length > 0;
}
console.log(isNonEmpty('hi'), isNonEmpty(''));
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

“unknown Türünü Tür Güvenli Şekilde Ele Alma” dersi ücretsiz mi?

Evet — “unknown Türünü Tür Güvenli Şekilde Ele Alma” 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 Türünü Tür Güvenli Şekilde Ele Alma” dersinde ne öğreneceğim?

unknown değerlerini güvenle kullanmadan önce türlerini daraltı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 4. dersidir.

“unknown Türünü Tür Güvenli Şekilde Ele Alma” 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. unknown ve any'yi Anlama
  2. never Türü ve İmkânsız Durumlar
  3. İşlevlerde void Türü
  4. unknown Türünü Tür Güvenli Şekilde Ele Alma
← TypeScript Academy Sayfasına Dön