TypeScript · CODINGNEED
TypeScript में unknown और any: API से आए डेटा की जाँच
छोटे उदाहरण से समझें कि unknown कहाँ मदद करता है और runtime validation क्यों ज़रूरी है।
Read in English →API का वादा और असली डेटा अलग हो सकते हैं
मान लीजिए API को credits की संख्या भेजनी चाहिए। किसी गलती से वह 20 की जगह "20" भेज देता है। any लिखने पर TypeScript कई गलत इस्तेमाल पर चेतावनी नहीं देगा। unknown लिखने पर पहले यह साबित करना पड़ता है कि डेटा किस प्रकार का है। दोनों में से कोई भी प्रकार अपने आप API का जवाब नहीं बदलता।
नियम को साफ लिखें
अगर credits शून्य या उससे बड़ा पूर्णांक होना चाहिए, तो केवल typeof की जाँच काफी नहीं है। दशमलव और सुरक्षित integer सीमा के बाहर की संख्या भी number हो सकती है। नीचे का फ़ंक्शन गलत डेटा पर null लौटाता है। कॉल करने वाला इस परिणाम को जाँचकर अगला कदम चुन सकता है।
function credits(value: unknown): number | null {
return typeof value === "number"
&& Number.isSafeInteger(value) && value >= 0
? value : null;
}
// credits(20) → 20
// credits("20") → nullबिना सोचे प्रकार न बदलें
Number(value) लगाना डेटा की जाँच करने के समान नहीं है। उदाहरण के लिए खाली string और false, दोनों शून्य में बदल सकते हैं। यदि किसी फ़ॉर्म में लिखी संख्या स्वीकार करनी है, तो उसके लिए अलग parsing नियम बनाएं। यह भी तय करें कि खाली जगह, दशमलव और ऋणात्मक संख्या स्वीकार होगी या नहीं।
खुद अभ्यास करें
फ़ंक्शन को 0, 8, 1.5, "8", null और true देकर चलाएं। पहले परिणाम का अनुमान लगाएं, फिर वास्तविक परिणाम देखें। एक बार डेटा सही साबित हो जाए, उसे ज्ञात प्रकार के साथ आगे भेजें। इस छोटे scalar की जाँच में समय और अतिरिक्त जगह O(1) है। बड़े object की हर property जाँचने पर लागत डेटा के आकार पर निर्भर होगी। अभ्यास की व्याख्या हिन्दी में है; जुड़े हुए पूर्ण पाठ अभी अंग्रेज़ी में हैं।
आधिकारिक संदर्भ: TypeScript documentation
अगला विषय
सुधार बताएं: care@codingneed.com