← Back to TypeScript Course | Chapter 2: Basic Types | Lesson 11 of 11

Type के Assertions

एक type assertion TypeScript को बताता है कि आप एक value को कैसे treat होते देखना चाहते हैं जब आप इसके type के बारे में compiler से ज़्यादा जानते हैं। Assertions runtime पर value नहीं बदलतीं और सिर्फ तब उपयोग होनी चाहिए जब assertion correct हो।
Syntax
typescript
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

typescript
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

typescript
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

typescript
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

typescript
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

typescript
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" });
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. एक unknown value पर value as string उपयोग करना और इसके convert होने की उम्मीद करना, जब एक assertion runtime value नहीं बदलता।
  2. Unchecked data पर response as ApiUser जैसी एक shape assert करना और फिर runtime पर undefined fields मिलना।
  3. एक .tsx file में angle-bracket form <string>value उपयोग करना, जहां यह JSX के साथ clash करता है।
चैप्टर सारांश
  • Core types में values describe करने के लिए number, string, boolean, arrays, tuples, object types, और enums शामिल हैं।
  • any checking disable करता है, जबकि unknown safer choice है जो आपको value उपयोग करने से पहले इसे check करने के लिए मजबूर करता है।
  • void, null, undefined, और never special cases describe करते हैं, और type assertions आपको compiler को बताने देते हैं कि एक value क्या है।
🔒

Chapter Quiz — Complete all 11 topics to unlock

0/11 topics done

Complete these topics first:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.