Node.js (NestJS / Express) İleri Seviye TypeScript

TypeScript: Generics, Mapped Types, Conditional Types & "infer"

Kod yazarken değil, derleme aşamasında tip üreten metaprogramlama sihirbazlığı.

5 Yaşındaki Çocuğa Anlatır Gibi (Analoji)

Kurabiye kalıbıdır. Kalıba ne tür hamur dökerseniz (Genel Tip T), fırından o şekilde kurabiye çıkar.

Teknik & Mimari Tanım

Generics tip bağımsız kod yazmayı sağlar. Mapped Types (Record, Partial, Pick) mevcut tipleri döngüyle dönüştürür. Conditional Types (T extends U ? X : Y) tip seviyesinde if-else mantığı kurar. "infer" anahtar kelimesi ise koşul içinde bilinmeyen bir tipi yakalar.

Mülakatta Ne Demelisin? (Kurtarıcı Altın Cevap)

“TypeScript tip sistemi Turing-complete'tir. "infer" kelimesi, bir generic tipin içindeki dönen tipi (ReturnType) veya dizi elemanının tipini dinamik olarak çıkartmak (unwrapping) için Conditional Types ile birlikte kullanılır.”

Node.js (NestJS / Express) Örnek Uygulaması
// Fonksiyonun dönüş tipini çıkaran 'ReturnType' nasıl yazılır:
type MyReturnType<T> = T extends (...args: any[]) => infer R ? R : never;

function fetchUser() { return { id: 1, name: 'Ali' }; }
type User = MyReturnType<typeof fetchUser>; // { id: number, name: string }
Mülakat Tuzağı & Adayların En Sık Yaptığı Hata:

Tembellik edip her yere "any" basmak ve TypeScript'in tip güvenliği avantajını tamamen çöpe atmak ("anyScript").