TypeScript साक्षात्कार कैसे पास करें: शीर्ष प्रश्न
TypeScript ने आधुनिक वेब डेवलपमेंट में सबसे अधिक मांग वाले टूल में से एक के रूप में अपना स्थान मजबूती से बना लिया है। यदि आप तकनीकी साक्षात्कार की तैयारी कर रहे हैं, तो TypeScript की मूल बातें और उन्नत क्षमताओं का ज्ञान अनिवार्य है। इस लेख में, हम उन शीर्ष प्रश्नों पर चर्चा करेंगे जो अक्सर साक्षात्कारों में पूछे जाते हैं, और सामग्री को मजबूत करने के लिए कोड उदाहरण देंगे।
1. मूल प्रकार और JavaScript से उनके अंतर
साक्षात्कार में आपसे निश्चित रूप से TypeScript के मूल प्रकारों और उनके व्यवहार के बारे में पूछा जाएगा। JavaScript से मुख्य अंतर स्थिर टाइपिंग है। आइए मुख्य बिंदुओं पर विचार करें।
1.1. आदिम प्रकार: string, number, boolean
TypeScript स्पष्ट प्रकार एनोटेशन जोड़ता है। उदाहरण के लिए:
let name: string = 'अन्ना';let age: number = 30;let isActive: boolean = true;एनोटेशन के बिना, TypeScript स्वचालित रूप से प्रकार का अनुमान लगाता है (type inference)।
1.2. any और unknown प्रकार
any प्रकार की जाँच को अक्षम करता है - इससे बचना बेहतर है। unknown एक सुरक्षित विकल्प है, उपयोग से पहले जाँच की आवश्यकता होती है:
let data: unknown = 'स्ट्रिंग';// console.log(data.toUpperCase()); // त्रुटि!if (typeof data === 'string') { console.log(data.toUpperCase()); // ठीक है}1.3. never और void
void- फ़ंक्शन कुछ भी वापस नहीं करता है।never- फ़ंक्शन कभी समाप्त नहीं होता (त्रुटि फेंकता है या अनंत लूप)।
function throwError(msg: string): never { throw new Error(msg);}2. इंटरफ़ेस और प्रकार (interface बनाम type)
यह सबसे सामान्य प्रश्नों में से एक है। दोनों तंत्र वस्तुओं की संरचना का वर्णन करने की अनुमति देते हैं, लेकिन अंतर हैं।
2.1. interface का उपयोग कब करें
- वस्तुओं और वर्गों के अनुबंध घोषित करने के लिए।
- विस्तार की संभावना (declaration merging):
interface User { name: string;}interface User { age: number;}// User में अब name और age शामिल हैं2.2. type का उपयोग कब करें
- यूनियन (union), इंटरसेक्शन (intersection) और आदिम उपनामों के लिए।
- declaration merging का समर्थन नहीं करता।
type Status = 'active' | 'inactive';type Person = { name: string } & { age: number };साक्षात्कार में प्रश्न: "क्या interface को type से बदला जा सकता है?" - हाँ, लेकिन वर्गों और विस्तार के लिए interface बेहतर है।
3. जेनेरिक्स (Generics)
जेनेरिक्स पुन: प्रयोज्य घटक बनाने की अनुमति देते हैं जो किसी भी प्रकार के साथ काम करते हैं। यह senior पदों के लिए अनिवार्य है।
3.1. सरल जेनेरिक फ़ंक्शन
function firstElement<T>(arr: T[]): T { return arr[0];}const num = firstElement([1, 2, 3]); // numberconst str = firstElement(['a', 'b']); // string3.2. जेनेरिक्स की सीमाएँ (extends)
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] { return obj[key];}const user = { name: 'इवान', age: 25 };console.log(getProperty(user, 'name')); // इवान3.3. इंटरफ़ेस में जेनेरिक्स
interface Repository<T> { getById(id: number): T; save(item: T): void;}अक्सर पूछा जाता है: "यदि any है तो जेनेरिक्स की आवश्यकता क्यों है?" - जेनेरिक्स प्रकार सुरक्षा बनाए रखते हैं।
4. यूटिलिटी टाइप्स और उन्नत क्षमताएँ
अंतर्निहित उपयोगिता प्रकार (Partial, Required, Pick, Omit) TypeScript की गहरी समझ के संकेतक हैं।
4.1. Partial और Required
interface Task { title: string; done: boolean;}const partialTask: Partial&l