← Back to TypeScript Course | Chapter 12: TypeScript with DOM | Lesson 6 of 6

Types के साथ LocalStorage

localStorage values को strings के रूप में store करता है, जबकि TypeScript applications अक्सर numbers, objects, और arrays के साथ काम करती हैं। Typed helper functions और validation localStorage access को सुरक्षित बना सकते हैं।
Syntax
typescript
const value = localStorage.getItem("key");
const data: Type = JSON.parse(value ?? "{}");
localStorage.setItem("key", JSON.stringify(data));

Strings Store करना

localStorage.setItem और getItem सिर्फ strings के साथ काम करते हैं, इसलिए एक string value store करना सबसे simple case है और किसी भी तरफ कोई extra type conversion नहीं चाहिए।

उदाहरण: Storing Strings

typescript
localStorage.setItem("username", "Ravi");
const name: string | null = localStorage.getItem("username");
console.log(name);

Numbers Store करना

एक number store करने का मतलब है इसे save करने से पहले string में convert करना (String(value)) और retrieval पर Number() से इसे वापस parse करना, क्योंकि localStorage में numeric type का कोई concept ही नहीं है।

उदाहरण: Storing Numbers

typescript
localStorage.setItem("age", String(25));
const age: number = Number(localStorage.getItem("age"));
console.log(age);

JSON से Objects Store करना

एक object store करने का मतलब है इसे save करने से पहले JSON.stringify से एक JSON string में serialize करना और इसे JSON.parse से वापस parse करना, जो आपके expected shape को explicitly annotate या assert किए बिना default रूप से any return करता है।

उदाहरण: Storing Objects with JSON

typescript
interface User { name: string; age: number }
const user: User = { name: "Ravi", age: 25 };
localStorage.setItem("user", JSON.stringify(user));
const loaded: User = JSON.parse(localStorage.getItem("user")!);
console.log(loaded.name);

Typed LocalStorage Helpers

एक typed localStorage helper setItem/getItem को generic functions में wrap करता है जो JSON conversion internally handle करते हैं, इसलिए बाकी का आपका code हर call site पर boilerplate दोहराए बिना typed values पढ़ और लिख सकता है।

उदाहरण: Typed LocalStorage Helpers

typescript
function setTyped<T>(key: string, value: T): void {
  localStorage.setItem(key, JSON.stringify(value));
}
function getTyped<T>(key: string): T | null {
  const raw = localStorage.getItem(key);
  return raw ? (JSON.parse(raw) as T) : null;
}
setTyped("count", 5);
console.log(getTyped<number>("count"));

Safe Parsing और Validation

क्योंकि JSON.parse any return करता है, safe parsing का मतलब है वापस आई चीज़ के shape को validate करना — ज़रूरी fields मौजूद हैं और सही type की हैं यह check करना — इसे अपने expected type के रूप में trust करने से पहले, क्योंकि stored data stale या tampered हो सकता है।

उदाहरण: Safe Parsing and Validation

typescript
interface User { name: string }
function isUser(value: any): value is User {
  return typeof value?.name === "string";
}
localStorage.setItem("user", JSON.stringify({ name: "Ravi" }));
const parsed = JSON.parse(localStorage.getItem("user")!);
if (isUser(parsed)) console.log(parsed.name);
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. बिना convert किए एक stored number वापस पढ़ना, जैसे localStorage.getItem("age") + 1, जो "251" देता है।
  2. बिना check किए एक missing key पर JSON.parse call करना, क्योंकि getItem null return करता है।
  3. बिना JSON.stringify के एक object save करना, जो text "[object Object]" store करता है।
चैप्टर सारांश
  • DOM type definitions TypeScript को elements, events, और browser APIs के types बताती हैं।
  • Elements select करना और उन्हें specific types में cast करना आपको element-specific properties सुरक्षित रूप से access देता है।
  • Typed event handlers, form handling, और localStorage access browser code को type-safe रखते हैं।
🔒

Chapter Quiz — Complete all 6 topics to unlock

0/6 topics done

Complete these topics first:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.