एक type assertion कंपाइलरला सांगते "माझ्यावर विश्वास ठेवा, हे मूल्य X प्रकारचे आहे" as वापरून. हे कोणतेही रनटाइम रूपांतरण किंवा तपासणी करत नाही — हे फक्त कंपाइलर मूल्याला कसे हाताळते हे बदलते.
el = .() ;
el. = ;
data = .(str) ;
एक type assertion कंपाइलरला सांगते "माझ्यावर विश्वास ठेवा, हे मूल्य X प्रकारचे आहे" as वापरून. हे कोणतेही रनटाइम रूपांतरण किंवा तपासणी करत नाही — हे फक्त कंपाइलर मूल्याला कसे हाताळते हे बदलते.
el = .() ;
el. = ;
data = .(str) ;
एक assertion कंपाइलरचा निर्णय ओव्हरराइड करते — जर तुम्ही चुकीचे असाल तर तुम्हाला कोणत्याही चेतावणीशिवाय रनटाइम क्रॅश मिळतो:
const x = "hello" as unknown as number; // double assertion — compiler stops complaining
x.toFixed(2); // 💥 runtime error: x.toFixed is not a function
Asserting करणे मूल्यला त्या प्रकारचे बनवत नाही; हे फक्त चेकरला शांत करते. तुम्ही कंपाइलरपासून योग्यतेची जबाबदारी घेतली आहे.
// 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 ला एक लहान, हेतुपूर्ण "मला हे अधिक चांगले माहित आहे" म्हणून हाताळा ज्याबद्दल तुम्ही निश्चित असणे आवश्यक आहे.