unknown का Type
In this page:
let variable: unknown = value;
if (typeof variable === "type") {
// variable is narrowed here
}
Basic Unknown Type
unknown से typed एक variable किसी भी type की value रख सकता है, any जैसा ही, लेकिन TypeScript आपको इस पर operations perform करने से मना करती है जब तक आप prove न करें कि यह असल में क्या है।
यह genuinely uncertain data के लिए any का type-safe counterpart बनाता है।
उदाहरण: Basic Unknown Type
let value: unknown = "hello";
// console.log(value.length); // rejected: must narrow the type first
console.log(value);
Unknown Values जांचना
एक typeof check आपको type-specific operations perform करने से पहले एक unknown value को एक specific type, जैसे string या number, तक narrow करने देता है। एक बार narrowed branch के अंदर, TypeScript automatically value को उस specific type के रूप में treat करती है।
उदाहरण: Checking Unknown Values
let value: unknown = "hello";
if (typeof value === "string") {
console.log(value.length); // safe: TypeScript knows it's a string here
}
Objects के साथ Unknown
जब एक unknown value एक object हो सकती है, इसकी structure verify करने की ज़रूरत है, उदाहरण के लिए एक particular property exist करने की जांच करके, इससे पहले इसकी कोई properties safely access की जा सकें।
यह check skip करना और सीधे एक property access करना एक compile-time error है।
उदाहरण: Unknown with Objects
let value: unknown = { name: "Ira" };
if (typeof value === "object" && value !== null && "name" in value) {
console.log((value as { name: string }).name);
}
Unknown और Type Guards
Type guards एक unknown value को कुछ ज़्यादा specific और usable तक narrow करने का general mechanism हैं। Common guards में primitives के लिए typeof, class instances के लिए instanceof, और plain objects के लिए manual property checks शामिल हैं।
उदाहरण: Unknown and Type Guards
function printLength(value: unknown): void {
if (typeof value === "string") {
console.log(value.length);
} else if (Array.isArray(value)) {
console.log(value.length);
}
}
printLength("hello");
Unknown बनाम Any
any और unknown दोनों technically किसी भी type की value store कर सकते हैं, लेकिन unknown किसी भी useful चीज़ करने से पहले validation demand करता है, जबकि any सब कुछ unchecked गुज़र जाने देता है।
एक external या untrusted source से आने वाले data के लिए, unknown almost always safer default है।
उदाहरण: Unknown Compared with Any
let unsafeValue: any = "42";
let safeValue: unknown = "42";
console.log(unsafeValue.toUpperCase()); // allowed, may crash at runtime
// console.log(safeValue.toUpperCase()); // rejected until narrowed
value.toUpperCase()जैसा एक method एकunknownvalue पर directly call करना, जो एक error है जब तक आप इसे narrow न करें।unknownकोanyजैसे उपयोग करना औरtypeofसे check करने के बजायas stringसे cast करना।- यह भूल जाना कि narrowing सिर्फ
ifbranch के अंदर apply होती है, इसलिए check के बाद value उपयोग करना फिर से fail होता है।
Chapter Quiz — Complete all 11 topics to unlock
0/11 topics done
Complete these topics first: