Type narrowing nedir? Type guard nasıl yazılır?

Cevap

Type narrowing, union bir tipin kod akışına göre daha dar bir tipe indirgenmesidir. TypeScript şu kontrolleri anlar: typeof, instanceof, in, eşitlik kontrolleri ve discriminated union'larda ortak alan.

Kendi kontrolünüzü yazmak için type predicate (deger is T) dönüş tipi kullanılır:

interface Kedi { tur: "kedi"; miyavla(): void }
interface Kopek { tur: "kopek"; havla(): void }
type Hayvan = Kedi | Kopek;

function kediMi(h: Hayvan): h is Kedi {
  return h.tur === "kedi";
}

function ses(h: Hayvan) {
  if (kediMi(h)) h.miyavla();   // burada h: Kedi
  else h.havla();               // burada h: Kopek
}

// API cevabını doğrulayan guard
function kullaniciMi(x: unknown): x is { id: number; ad: string } {
  return typeof x === "object" && x !== null && "id" in x && "ad" in x;
}
  1. any, unknown ve never tipleri arasındaki fark nedir?OrtaTypeScriptFrontend
  2. Generic (jenerik) tipler nedir? Bir örnekle açıklayın.OrtaTypeScriptFrontend
  3. interface ile type alias arasındaki farklar nelerdir?OrtaTypeScriptFrontend
  4. TypeScript nedir, JavaScript'e göre avantajları nelerdir?KolayTypeScriptFrontend
  5. tsconfig.json'daki strict modu neleri açar, neden önemlidir?OrtaTypeScriptFrontend
  6. TypeScript'te enum ile union literal tip arasında hangisini tercih edersiniz?KolayTypeScriptFrontend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle