ये दोनों ऑपरेटर आपको मौजूदा प्रकारों और मानों से प्रकार प्राप्त करने देते हैं — प्रकार-स्तरीय प्रोग्रामिंग की नींव।
keyof — object प्रकार की कुंजियों का union
ts
interface User { id: number; name: string; }
type = keyof ;
ये दोनों ऑपरेटर आपको मौजूदा प्रकारों और मानों से प्रकार प्राप्त करने देते हैं — प्रकार-स्तरीय प्रोग्रामिंग की नींव।
interface User { id: number; name: string; }
type = keyof ;
const config = { host: "localhost", port: 3000 };
type Config = typeof config; // { host: string; port: number }
typeof (प्रकार स्थिति में) रनटाइम मान के अनुमानित प्रकार को कैप्चर करता है, इसलिए आपको प्रकार को अलग से लिखना नहीं पड़ता।
function getProp<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
const user = { id: 1, name: "Ann" };
getProp(user, "name"); // returns string
getProp(user, "age"); // ❌ Error: "age" is not a key of user
यहाँ K extends keyof T key को वास्तविक कुंजियों तक सीमित करता है, और T[K] (एक indexed access type) उस कुंजी के लिए सटीक मान प्रकार देता है। टाइपो compile errors बन जाते हैं।
const Roles = { Admin: "admin", User: "user" } as const;
type Role = typeof Roles[keyof typeof Roles]; // "admin" | "user"
keyof और typeof value world और type world को जोड़ते हैं।
वे प्रकार-सुरक्षित property access, config/constants से प्रकार प्राप्त करना (single source of truth), और mapped और conditional types के लिए building blocks हैं।
ये आपको समानांतर प्रकार परिभाषाओं को हाथ से बनाए रखने से बचाने का तरीका है।