spinny:~/writing $ less advanced-typescript-patterns.md
12TypeScript बड़े पैमाने पर वेब विकास के लिए उद्योग मानक बन गया है। जबकि अधिकांश डेवलपर्स इंटरफेस और प्रकारों की मूल बातें जानते हैं, वास्तविक शक्ति इसके उन्नत प्रकार प्रणाली में निहित है। यहाँ 5 पैटर्न हैं जो आपको एक वरिष्ठ इंजीनियर के रूप में अलग करेंगे।34## 1. Generic Constraints56Generics शक्तिशाली हैं, लेकिन कभी-कभी आपको सीमित करने की आवश्यकता होती है कि क्या पारित किया जा सकता है। `extends` यहाँ आपका मित्र है।78```typescript9interface HasId {10 id: string;11}1213function getById<T extends HasId>(list: T[], id: string): T | undefined {14 return list.find((item) => item.id === id);15}16```1718यह सुनिश्चित करके कि `T` `HasId` का विस्तार करता है, हम गारंटी देते हैं कि फ़ंक्शन के अंदर `.id` तक पहुंचना सुरक्षित है।1920## 2. Conditional Types2122Conditional types आपको गैर-समान प्रकार की मैपिंग बनाने की अनुमति देते हैं। सिंटैक्स JavaScript में टर्नरी ऑपरेटर के समान है।2324```typescript25type IsString<T> = T extends string ? true : false;2627type A = IsString<string>; // true28type B = IsString<number>; // false29```3031एक व्यावहारिक उपयोग का मामला एक संघ से प्रकारों को फ़िल्टर करना है:3233```typescript34type Diff<T, U> = T extends U ? never : T;35type NonNullable<T> = Diff<T, null | undefined>;36```3738## 3. Mapped Types3940Mapped types आपको गुणों को बदलकर पुराने प्रकारों के आधार पर नए प्रकार बनाने की अनुमति देते हैं।4142```typescript43type ReadOnly<T> = {44 readonly [P in keyof T]: T[P];45};4647interface User {48 name: string;49 age: number;50}5152type ReadOnlyUser = ReadOnly<User>;53```5455आप संशोधक जोड़ या हटा भी सकते हैं:5657```typescript58type Mutable<T> = {59 -readonly [P in keyof T]: T[P];60};61```6263## 4. Template Literal Types6465TypeScript 4.1 में पेश किया गया, ये आपको सीधे स्ट्रिंग प्रकारों में हेरफेर करने की अनुमति देते हैं।6667```typescript68type World = 'world';69type Greeting = `hello ${World}`; // "hello world"7071type Color = 'red' | 'blue';72type Quantity = 'light' | 'dark';7374type Palette = `${Quantity}-${Color}`;75// "light-red" | "light-blue" | "dark-red" | "dark-blue"76```7778यह उन स्ट्रिंग्स को टाइप करने के लिए अविश्वसनीय रूप से उपयोगी है जो एक विशिष्ट पैटर्न का पालन करते हैं, जैसे CSS कक्षाएं या ईवेंट नाम।7980## 5. `infer` कीवर्ड8182Conditional types के भीतर `infer` कीवर्ड आपको अन्य प्रकारों से प्रकार निकालने की अनुमति देता है।8384```typescript85type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;8687function check(): boolean {88 return true;89}9091type CheckReturn = ReturnType<typeof check>; // boolean92```9394यहाँ, हम TypeScript को एक फ़ंक्शन के रिटर्न प्रकार `R` को "अनुमान" लगाने और इसे वापस करने के लिए कह रहे हैं।9596## निष्कर्ष9798इन पैटर्नों में महारत हासिल करने से आप पुस्तकालय और उपयोगिताओं को लिखने की अनुमति देते हैं जो मजबूत हैं और उत्कृष्ट डेवलपर अनुभव (DX) प्रदान करते हैं। उन्नत TypeScript का लक्ष्य जटिलता के लिए जटिलता नहीं है, बल्कि सुरक्षा और अभिव्यक्ति है।99
:वरिष्ठ इंजीनियरों के लिए 5 उन्नत TypeScript पैटर्नlines 1-99 (END) — press q to close