CodeBlanks Logo Icon CodeBlanks

User-defined type guard

is ile özel tür koruyucu yazmayı öğrenirsin.

User-defined type guard

User-defined type guard, bir fonksiyonun dönüş türü olarak x is T biçimindeki bir koşul (predicate) kullanır. Bu, fonksiyon true döndürdüğünde TypeScript'in parametreyi T türüne daraltmasını sağlar. unknown gibi geniş türleri güvenli şekilde işlemenin yoludur.

function isString(x: unknown): x is string {
  return typeof x === "string";
}

function upper(v: unknown): string {
  if (isString(v)) {
    return v.toUpperCase();  // v: string
  }
  return "";
}

is ile unknown işleme

type guard'lar unknown türüyle çalışırken özellikle yararlıdır. Bir değerin yapısı bilinmediğinde, guard fonksiyonuyla güvenli daraltma yapılır. type guard'ı yeniden kullanılabilir yapmak, daraltma mantığını tek yerde toplar.

function isNumber(x: unknown): x is number {
  return typeof x === "number";
}

function double(v: unknown): number {
  if (isNumber(v)) {
    return v * 2;  // v: number
  }
  return 0;
}

Uygulama isString guard ile unknown işle

isString(x: unknown): x is string type guard fonksiyonunu tanımla (içinde typeof x === "string" kontrolü olsun). upper(v: unknown): string fonksiyonunu yaz: eğer isString(v) true ise v.toUpperCase() döndür; değilse "" döndür. console.log(upper("hello")) ve console.log(upper(42)) ile sonuçları yazdır.

Başlangıç kodu

index.ts
// isString guard fonksiyonunu tanımla (unknown parametre, string predicate)

// upper(v: unknown): string fonksiyonunu guard ile yaz

// upper("hello") ve upper(42) sonuçlarını yazdır

Örnek çözüm

index.ts
function isString(x: unknown): x is string {
  return typeof x === "string";
}

function upper(v: unknown): string {
  if (isString(v)) {
    return v.toUpperCase();
  }
  return "";
}

console.log(upper("hello"));
console.log(upper(42));

Beklenen çıktı

HELLO

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 x is T biçimindeki dönüş türü ne işe yarar?

  • Çalışma zamanında değer üretir
  • T türünü otomatik oluşturur
  • Fonksiyon true döndürdüğünde x'i T'ye daraltır Doğru cevap
  • Fonksiyonun daha hızlı çalışmasını sağlar

Açıklama: x is T predicate'i, fonksiyon true döndürdüğünde TypeScript'e parametrenin T olduğunu söyler; if koşulunda parametre T'ye daraltılır.

2 is predicate tanımı

Soru
function isString(x: unknown): ____ {
  return typeof x === "string";
}
Cevap
function isString(x: unknown): x is string {
  return typeof x === "string";
}

Açıklama: x is string predicate'i, fonksiyon true döndürdüğünde x'in string olduğunu TypeScript'e söyler ve daraltma sağlar.

3 Type guard parçaları

Kavram Anlamı
x is T type guard predicate
isString(x) true ise x string'e daraltır
unknown türü guard ile güvenli daraltma
typeof x === "string" çalışma zamanı kontrolü

İleri seviye bölümündeki tüm dersler