Type Narrowing
Jab ek value ka type ek union hota hai — jaise string | number — TypeScript aapko un types mein se sirf ek ke liye khaas operations istemal nahi karne dega jab tak aap saabit na kar do ke woh asal mein kaunsa hai. Narrowing wahi tareeqa hai jisse aap yeh saboot dete hain, aur TypeScript ka checker asal mein us saboot ko track karta hai.
function describe(value: string | number): string {
if (typeof value === "string") {
return `String of length ${value.length}`;
}
return `Number: ${value.toFixed(2)}`;
}
console.log(describe("hello"));
console.log(describe(3.14159));String of length 5 Number: 3.14
if (typeof value === "string") block ke andar, TypeScript value ko ek string ki tarah treat karta hai — value.length wahan valid hai lekin us block ke bahar ek compile error hoga, jahan value abhi bhi ek number ho sakta hai.
in — check karna ke koi property mojood hai ya nahi
in operator check karta hai ke ek object mein di gayi property hai ya nahi, aur TypeScript us check ko istemal kar ke do alag object shapes ke darmiyan narrow karta hai.
interface Cat {
meow(): string;
}
interface Dog {
bark(): string;
}
function speak(animal: Cat | Dog): string {
if ("meow" in animal) {
return animal.meow();
}
return animal.bark();
}
const cat: Cat = { meow: () => "Meow!" };
const dog: Dog = { bark: () => "Woof!" };
console.log(speak(cat));
console.log(speak(dog));Meow! Woof!
Aage: modules aur standard library — files ke across code organize karna, aur kuch utility types jo ab tak cover ki gayi har cheez par banate hain.