any से बेहतर unknown
In this page:
let value: unknown = someValue;
if (typeof value === "string") {
// value is narrowed to string here
}
unknown किसी भी Value को Accept करता है
Specific types के विपरीत, unknown एक string, एक number, एक object, एक array, या कुछ और भी रख सकता है — लेकिन any के विपरीत, यह properly narrow होने तक उस value पर unsafe operations को actively रोकता है।
उदाहरण: unknown Accepts Any Value
let value: unknown = "hello";
value = 42;
value = { key: "value" };
console.log(value);
unknown को Narrow करना
एक unknown value को typeof, instanceof, Array.isArray, direct property checks, या एक custom type guard उपयोग करके narrow करें — इनमें से कोई भी technique TypeScript को बाद में value को ज़्यादा specific मानने के लिए काफी information देती है।
उदाहरण: Narrowing unknown
function describe(value: unknown): string {
if (typeof value === "string") return `String: ${value}`;
if (Array.isArray(value)) return `Array of ${value.length}`;
return "Unknown type";
}
console.log(describe([1, 2, 3]));
JSON Data के लिए unknown
TypeScript की standard library declarations में JSON.parse का return type any है, इसलिए external JSON से आने वाले data को untrusted माना जाना चाहिए — parsed result को एक unknown-typed variable में assign करना इसे use से पहले validate करने को encourage करता है।
उदाहरण: unknown for JSON Data
const raw: unknown = JSON.parse('{"name":"Ravi"}');
if (typeof raw === "object" && raw !== null && "name" in raw) {
console.log((raw as { name: string }).name);
}
Error Handling में unknown
Caught errors को Error के बजाय unknown माना जाना चाहिए, क्योंकि JavaScript ऐसी values throw करने की permission देता है जो बिल्कुल Error objects नहीं हैं — message या इस पर कोई और property पढ़ने से पहले caught value को narrow करें।
उदाहरण: unknown in Error Handling
try {
throw new Error("failed");
} catch (err: unknown) {
if (err instanceof Error) console.log(err.message);
}
Generic APIs में unknown
unknown generic utility functions के लिए well suited है जहां implementation को value की shape के बारे में कुछ भी मान नहीं लेना चाहिए, internally safety preserve करते हुए callers को जो भी type चाहिए supply करने देते हुए।
उदाहरण: unknown in Generic APIs
function storeValue(key: string, value: unknown): void {
console.log(`Storing ${key} without assuming its shape`);
}
storeValue("config", { debug: true });
- एक
unknownvalue को सीधे उपयोग करना, जैसेvalue.length, जो narrow होने तक एक error है। typeofसे check करने के बजायas stringसे cast करना, जो problem को फिर से hide कर देता है।- यह मान लेना कि
JSON.parseunknownreturn करता है, जब यहanyreturn करता है और इसे खुदunknownमें assign करना चाहिए।
Chapter Quiz — Complete all 7 topics to unlock
0/7 topics done
Complete these topics first: