Generics
Ek generic function ek aise type ke sath kaam karta hai jo function call hone par decide hota hai, define hone par nahi. Yeh TypeScript ka woh tarika hai jisse "yeh type ke bina hisaab kiye same tarah kaam karta hai" express hota hai — ek array-reverse karne wale function ko strings aur numbers ke liye alag version ki zaroorat nahi honi chahiye.
function firstElement<T>(items: T[]): T {
return items[0];
}
console.log(firstElement([1, 2, 3]));
console.log(firstElement(["a", "b", "c"]));1 a
T ek placeholder hai — TypeScript ise us type se fill kar deta hai jo aap actually pass karte ho, aur return type match karne ke liye lock ho jaata hai. firstElement([1, 2, 3]) ke baare mein pata hota hai ki yeh ek number return karega; firstElement(["a", "b"]) ke baare mein pata hota hai ki yeh ek string return karega.
Generic interfaces
Interfaces bhi generic ho sakte hain — "kisi value ko hold karne wala ek box" jaisi shape ke liye useful, jahan value ka type badalta rehta hai.
interface Box<T> {
value: T;
}
let numberBox: Box<number> = { value: 42 };
let stringBox: Box<string> = { value: "hello" };
console.log(numberBox.value, stringBox.value);42 hello
Aage: conditional statements — ek value par branch karna, bilkul kisi bhi doosri language ki tarah.