← Back to TypeScript Course | Chapter 18: Error Handling | Lesson 5 of 5

Option Type Pattern की जानकारी

Option pattern एक ऐसी value represent करता है जो exist कर सकती है या absent हो सकती है। TypeScript में, इसे सिर्फ null या undefined पर निर्भर रहने के बजाय एक discriminated union के रूप में model किया जा सकता है।
Syntax
typescript
type Option<T> = { some: true; value: T } | { some: false };

Defining an Option Type

एक Option type आमतौर पर दो states represent करता है: Some, एक present value को wrap करते हुए, और None, एक absence represent करते हुए — यह 'maybe there's a value' को कुछ ऐसा बना देता है जिसे type system actually enforce कर सके।

उदाहरण: Defining an Option Type

typescript
type Option<T> = { kind: "some"; value: T } | { kind: "none" };
const present: Option<number> = { kind: "some", value: 5 };
console.log(present);

Creating Some and None

some(value) और none() जैसे Helper functions Option values को बनाने में concise रखते हैं जबकि उनके generic type parameter को preserve करते हैं, इसलिए TypeScript को अब भी exactly पता रहता है कि अंदर किस type की value हो सकती है।

उदाहरण: Creating Some and None

typescript
type Option<T> = { kind: "some"; value: T } | { kind: "none" };
function some<T>(value: T): Option<T> { return { kind: "some", value }; }
function none<T>(): Option<T> { return { kind: "none" }; }
console.log(some(5), none<number>());

Checking an Option

value access करने से पहले discriminant field check करें ताकि TypeScript union को safely narrow कर सके — बिना check किए सीधे एक Option में पढ़ना exactly वह mistake है जिसे रोकने के लिए यह pattern है।

उदाहरण: Checking an Option

typescript
type Option<T> = { kind: "some"; value: T } | { kind: "none" };
function describe(opt: Option<number>): string {
  return opt.kind === "some" ? `Value: ${opt.value}` : "No value";
}
console.log(describe({ kind: "some", value: 5 }));

Option Helper Operations

Helper operations एक Option की value निकाल सकते हैं या जब वह absent हो तो एक default पर fall back कर सकते हैं, null checks की एक scattered chain को एक composable operation से replace करते हुए।

उदाहरण: Option Helper Operations

typescript
type Option<T> = { kind: "some"; value: T } | { kind: "none" };
function getOrElse<T>(opt: Option<T>, fallback: T): T {
  return opt.kind === "some" ? opt.value : fallback;
}
console.log(getOrElse<number>({ kind: "none" }, 0));

When to Use Option

Option सबसे उपयोगी है जब absence एक पूरी तरह normal, expected outcome हो — एक ऐसा item ढूंढना जो exist न करे, या एक configuration value पढ़ना जो genuinely optional है — बजाय उस absence को एक exceptional error मानने के।

उदाहरण: When to Use Option

typescript
type Option<T> = { kind: "some"; value: T } | { kind: "none" };
function findConfig(key: string): Option<string> {
  return key === "theme" ? { kind: "some", value: "dark" } : { kind: "none" };
}
console.log(findConfig("theme"));
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. बिना kind === "some" check किए opt.value पढ़ना, जो एक compile error है।
  2. एक जगह null और दूसरी जगह Option उपयोग करना, जो code को inconsistent बनाता है।
  3. none<T>() को इसका type argument देना भूल जाना इसलिए यह Option<unknown> बन जाता है।
चैप्टर सारांश
  • try/catch TypeScript में काम करता है, और caught errors को उनके types ध्यान में रखते हुए handle किया जाना चाहिए।
  • Custom error classes आपको meaningful, specific error types बनाने देती हैं।
  • Result और Option type patterns type system में success, failure, और missing values को explicitly represent करते हैं।
🔒

Chapter Quiz — Complete all 5 topics to unlock

0/5 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.