TypeScript Academy · पाठ

parse बनाम safeParse

सत्यापन की सफलता और विफलता का सहजता से प्रबंधन करें।

पाठ 3, कुल 4 में से13 चरण

parse बनाम safeParse, CoddyKit पर TypeScript Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह TypeScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

सत्यापन के दो तरीके

Zod आपको सत्यापन की दो विधियाँ देता है: parse, जो अमान्य डेटा पर त्रुटि उत्पन्न करता है, और safeParse, जो इसके बजाय परिणाम ऑब्जेक्ट लौटाता है।

import { z } from "zod";
const schema = z.string();
// schema.parse(x) throws on failure
// schema.safeParse(x) returns { success, ... }

parse अमान्य डेटा पर त्रुटि उत्पन्न करता है

सफल होने पर parse सत्यापित मान लौटाता है और विफल होने पर ZodError उत्पन्न करता है। यह तब आदर्श है जब अमान्य डेटा वास्तव में असाधारण स्थिति हो।

import { z } from "zod";
const schema = z.number();
const ok = schema.parse(42); // 42
// schema.parse("nope"); // throws ZodError

Parse की त्रुटियाँ पकड़ना

उत्पन्न हुई त्रुटि को संभालने के लिए parse को try/catch में लपेटिए और विफलता के विवरण के लिए उसका निरीक्षण कीजिए।

import { z } from "zod";
const schema = z.number();
try {
  schema.parse("nope");
} catch (err) {
  if (err instanceof z.ZodError) {
    console.log("Invalid:", err.issues.length);
  }
}

safeParse परिणाम लौटाता है

safeParse कभी त्रुटि उत्पन्न नहीं करता। यह success: true और data, या success: false और error वाला ऑब्जेक्ट लौटाता है।

import { z } from "zod";
const schema = z.number();
const result = schema.safeParse("nope");
// result is { success: false, error: ZodError }

परिणाम का प्रकार सीमित करना

परिणाम success पर आधारित discriminated union होता है। इसकी जाँच करने पर प्रकार data या error में से किसी एक तक सीमित हो जाता है।

import { z } from "zod";
const schema = z.object({ id: z.number() });
const result = schema.safeParse({ id: 1 });
if (result.success) {
  console.log(result.data.id); // typed
} else {
  console.log(result.error.issues);
}

parse का उपयोग कब करें

जब अमान्य इनपुट किसी बग का संकेत हो या पूरी प्रक्रिया रोक देनी चाहिए, तब parse का उपयोग कीजिए, जैसे शुरुआत में आवश्यक config पढ़ते समय।

import { z } from "zod";
const configSchema = z.object({ port: z.number() });
const config = configSchema.parse({ port: 8080 });
// Fail fast if config is wrong.

safeParse का उपयोग कब करें

जब अमान्य इनपुट अपेक्षित हो और आप उसे सहजता से संभालना चाहते हों, तब safeParse का उपयोग कीजिए, जैसे उपयोगकर्ता द्वारा भेजे गए फ़ॉर्म का सत्यापन करते समय।

import { z } from "zod";
const formSchema = z.object({ email: z.string() });
const r = formSchema.safeParse({ email: 123 });
if (!r.success) {
  // Show a friendly validation message
}

ZodError की समस्याएँ पढ़ना

ZodError में एक issues ऐरे होता है, जो प्रत्येक समस्या का विवरण देता है: पथ, संदेश और त्रुटि कोड।

import { z } from "zod";
const schema = z.object({ age: z.number() });
const r = schema.safeParse({ age: "x" });
if (!r.success) {
  for (const issue of r.error.issues) {
    console.log(issue.path, issue.message);
  }
}

दोनों अनुमानित प्रकार लौटाते हैं

सफल होने पर दोनों विधियाँ z.infer<typeof schema> के रूप में प्रकारित सत्यापित मान देती हैं, इसलिए आगे का कोड पूरी तरह प्रकारित रहता है।

import { z } from "zod";
const userSchema = z.object({ name: z.string() });
type User = z.infer<typeof userSchema>;
const u: User = userSchema.parse({ name: "Ada" });
console.log(u.name);

सही विधि चुनना

सामान्य नियम: विश्वसनीय या महत्वपूर्ण पथों के लिए parse, जहाँ विफलता पर निष्पादन रुकना चाहिए; और अविश्वसनीय इनपुट के लिए safeParse, जिसे क्रैश किए बिना संभालना आवश्यक हो।

import { z } from "zod";
const schema = z.string();
// Critical: schema.parse(value)
// User-facing: schema.safeParse(value)

दोनों शैलियों को मिलाना

एक सामान्य तरीका यह है कि safeParse को ऐसे सहायक में लपेटा जाए जो प्रकारित डेटा या स्वरूपित त्रुटि लौटाए, जिससे दोनों विधियों की सुविधाएँ मिल जाती हैं।

import { z } from "zod";
function validate<T extends z.ZodType>(schema: T, value: unknown) {
  const r = schema.safeParse(value);
  return r.success ? { ok: true, data: r.data } : { ok: false, error: r.error };
}
// Reusable, no throwing.

त्वरित जाँच: parse बनाम safeParse

parse और safeParse के अंतर के बारे में अपनी समझ जाँचिए।

पुनरावलोकन: parse बनाम safeParse

आपने सीखा कि अमान्य डेटा पर parse त्रुटि उत्पन्न करता है, जबकि safeParse success/error परिणाम लौटाता है; साथ ही यह भी कि प्रत्येक का उपयोग कब करना है और ZodError की समस्याएँ कैसे पढ़नी हैं।

import { z } from "zod";
const schema = z.object({ id: z.number() });
const r = schema.safeParse({ id: 1 });
if (r.success) console.log(r.data.id);
शुरुआत निःशुल्क

एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
101
पाठ
352

अक्सर पूछे जाने वाले प्रश्न

क्या “parse बनाम safeParse” पाठ निःशुल्क है?

हाँ—“parse बनाम safeParse” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और TypeScript Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“parse बनाम safeParse” में मैं क्या सीखूँगा?

सत्यापन की सफलता और विफलता का सहजता से प्रबंधन करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ TypeScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या TypeScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर TypeScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“parse बनाम safeParse” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस TypeScript Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर TypeScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Zod स्कीमा की मूल बातें
  2. स्कीमा से प्रकारों का अनुमान
  3. parse बनाम safeParse
  4. स्कीमा को संयोजित और परिष्कृत करना
← TypeScript Academy पर वापस जाएँ