Kodokon kodokon.com

इन्फ़रेंस, any और unknown

इन्फ़रेंस के साथ TypeScript को टाइप का पता लगाने दें, और समझें कि unknown खतरनाक any से बेहतर क्यों है।

8 मिनट · 3 प्रश्न

इस पाठ को Kodokon में खोलें

अच्छी खबर: आपको हर वेरिएबल को एनोटेट करने की ज़रूरत नहीं। टाइप इन्फ़रेंस की बदौलत, TypeScript आपके द्वारा दिए गए मान से किसी वेरिएबल के टाइप का पता लगा लेता है। let city = "Lyon" लिखना पर्याप्त है: TypeScript जानता है कि city एक string है और उसे ऐसे सुरक्षित करता है मानो आपने उसे एनोटेट किया हो।

TYPESCRIPT
let city = "Lyon"; // inferred type: string
let count = 3;     // inferred type: number

count = count + 1; // accepted
// city = 42; -> error: city is still a string
कोई एनोटेशन नहीं, फिर भी सभी टाइप मौजूद हैं।

any टाइप का अर्थ है "कुछ भी"। एक any वेरिएबल सभी जाँचों से बच निकलता है: TypeScript सत्यापित किए बिना, सब कुछ स्वीकार करता है। यह अपनी सीट बेल्ट हटाने जैसा है: कोड कंपाइल हो जाता है, लेकिन त्रुटियाँ रनटाइम पर वापस आ जाती हैं - ठीक वही जिसे TypeScript को रोकना था।

TYPESCRIPT
let data: any = "hello";
data = 42; // accepted without complaint

// Compiles, but crashes at runtime:
// data.toUpperCase() does not exist on a number!
any के साथ, TypeScript दूसरी ओर देखता रहता है।

ऐसे मान के लिए जिसका टाइप वास्तव में अज्ञात है (एक सर्वर प्रतिक्रिया, उपयोगकर्ता इनपुट), unknown को प्राथमिकता दें। any की तरह, यह किसी भी मान को स्वीकार करता है, लेकिन यह आपको उपयोग करने से पहले टाइप जाँचने के लिए मजबूर करता है (उदाहरण के लिए typeof के साथ)। इसलिए सुरक्षा बरकरार रहती है।

TYPESCRIPT
let value: unknown = "hello";

// console.log(value.toUpperCase()); -> rejected!

if (typeof value === "string") {
  console.log(value.toUpperCase()); // "HELLO"
}
unknown उपयोग से पहले एक जाँच की माँग करता है।

ज्ञान जांच

सुनिश्चित करें कि आपको इस पाठ के मुख्य बिंदु याद हैं।

  1. टाइप इन्फ़रेंस क्या है?
    • TypeScript आरंभिक मान से टाइप का पता लगाता है
    • TypeScript प्रोग्राम से टाइप हटा देता है
    • TypeScript संख्याओं को टेक्स्ट में बदल देता है
  2. any से जितना संभव हो बचना क्यों चाहिए?
    • यह प्रोग्राम को धीमा कर देता है
    • यह TypeScript की जाँचों को निष्क्रिय कर देता है
    • यह भाषा द्वारा निषिद्ध है
    • यह केवल संख्याओं के साथ काम करता है
  3. unknown टाइप के किसी मान का उपयोग करने से पहले आपको क्या करना चाहिए?
    • इसका टाइप जाँचें, उदाहरण के लिए typeof के साथ
    • इसे any में बदलें
    • इसे दूसरी बार घोषित करें