एक टाइप assertion कंपाइलर को बताता है "मुझ पर विश्वास करो, यह मान X प्रकार का है" as का उपयोग करके। यह कोई runtime रूपांतरण या जांच नहीं करता — यह केवल बदलता है कि कंपाइलर मान को कैसे मानता है।
el = .() ;
el. = ;
data = .(str) ;
एक टाइप assertion कंपाइलर को बताता है "मुझ पर विश्वास करो, यह मान X प्रकार का है" as का उपयोग करके। यह कोई runtime रूपांतरण या जांच नहीं करता — यह केवल बदलता है कि कंपाइलर मान को कैसे मानता है।
el = .() ;
el. = ;
data = .(str) ;
एक assertion कंपाइलर के निर्णय को override करता है — यदि आप गलत हैं, तो आपको कोई चेतावनी के बिना runtime क्रैश मिलता है:
const x = "hello" as unknown as number; // double assertion — compiler stops complaining
x.toFixed(2); // 💥 runtime error: x.toFixed is not a function
Assertion मान को वह प्रकार नहीं बनाता; यह केवल checker को शांत करता है। आपने कंपाइलर से सही होने की जिम्मेदारी ले ली है।
// 1. type guard — actually verify at runtime
if (typeof input === "string") { /* input is string, proven */ }
// 2. validation library (zod) for external data
const user = UserSchema.parse(data); // throws if shape is wrong
as const अलग हैconst point = { x: 1 } as const; // not a risky cast — narrows to literal/readonly
Assertions कभी-कभी आवश्यक होते हैं (DOM APIs, unknown को संकीर्ण करना जिसे आपने पहले ही जांच लिया है), लेकिन प्रत्येक एक जगह है जहां कंपाइलर आपकी रक्षा नहीं कर सकता।
अविश्वसनीय डेटा के लिए type guards या schema validation पसंद करें, और प्रत्येक as को एक छोटी, जानबूझकर "मुझे बेहतर पता है" के रूप में मानें जिसके बारे में आप निश्चित होना चाहिए।