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;
}İlgili TypeScript soruları
- any, unknown ve never tipleri arasındaki fark nedir?
- Generic (jenerik) tipler nedir? Bir örnekle açıklayın.
- interface ile type alias arasındaki farklar nelerdir?
- TypeScript nedir, JavaScript'e göre avantajları nelerdir?
- tsconfig.json'daki strict modu neleri açar, neden önemlidir?
- TypeScript'te enum ile union literal tip arasında hangisini tercih edersiniz?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.