Type के Assertions
In this page:
let value = expression as TargetType;
let value2 = <TargetType>expression;
Basic as Syntax
as syntax, value as SomeType जैसा लिखा गया, modern TypeScript में एक type assertion लिखने का standard तरीका है। यह compiler को आपके independently infer करने के बजाय एक value के type के बारे में आपके claim पर trust करने के लिए कहता है।
उदाहरण: Basic as Syntax
let value: unknown = "hello";
let strLength: number = (value as string).length;
console.log(strLength);
Objects के साथ Assertions
Type assertions एक object की expected shape describe कर सकते हैं, उदाहरण के लिए एक API response को एक specific interface के रूप में assert करना। Assertion compiler को यह समझने में मदद करता है कि बाद में कौन सी properties safely available हैं, भले ही इसने runtime पर उन्हें verify न किया हो।
उदाहरण: Assertions with Objects
interface ApiUser {
id: number;
name: string;
}
let response: unknown = { id: 1, name: "Tara" };
let user = response as ApiUser;
console.log(user.name);
Angle-Bracket Syntax
TypeScript एक पुरानी angle-bracket assertion syntax भी support करती है, <string>value, जो as जैसा ही behave करती है। यह .tsx files में generally avoided है, क्योंकि वहां angle brackets JSX tags के साथ visually और syntactically clash करते हैं।
उदाहरण: Angle-Bracket Syntax
let value: unknown = "hello";
let strLength: number = (<string>value).length;
console.log(strLength);
Type Assertions Values Convert नहीं करती
एक type assertion सिर्फ TypeScript की compile-time understanding को एक value के type की बदलता है; यह underlying runtime value का कोई actual conversion perform नहीं करता।
एक string को एक number के रूप में assert करना इसे parse नहीं करता, यह सिर्फ type checker को इसे ऐसा treat करने के लिए कहता है जैसे यह एक हो।
उदाहरण: Type Assertions Do Not Convert Values
let value: unknown = "42";
let asNumber = value as number; // no real conversion happens
console.log(typeof asNumber, asNumber); // still "string", "42"
Assertions का Safe उपयोग
Assertions सिर्फ तब उपयोग किए जाने चाहिए जब आपको एक value के real type के बारे में reliable, out-of-band knowledge हो, जैसे यह जानना कि एक API हमेशा एक particular shape return करता है।
जब वह certainty नहीं हो, एक runtime type guard type narrow करने का blindly assert करने से कहीं ज़्यादा safer तरीका है।
उदाहरण: Safe Use of Assertions
interface ApiResponse {
status: string;
}
function handle(data: unknown) {
if (typeof data === "object" && data !== null && "status" in data) {
console.log((data as ApiResponse).status);
}
}
handle({ status: "ok" });
- एक
unknownvalue परvalue as stringउपयोग करना और इसके convert होने की उम्मीद करना, जब एक assertion runtime value नहीं बदलता। - Unchecked data पर
response as ApiUserजैसी एक shape assert करना और फिर runtime परundefinedfields मिलना। - एक
.tsxfile में angle-bracket form<string>valueउपयोग करना, जहां यह JSX के साथ clash करता है।
- Core types में values describe करने के लिए
number,string,boolean, arrays, tuples, object types, और enums शामिल हैं। anychecking disable करता है, जबकिunknownsafer choice है जो आपको value उपयोग करने से पहले इसे check करने के लिए मजबूर करता है।void,null,undefined, औरneverspecial cases describe करते हैं, और type assertions आपको compiler को बताने देते हैं कि एक value क्या है।
Chapter Quiz — Complete all 11 topics to unlock
0/11 topics done
Complete these topics first: