TypeScript साक्षात्कार कैसे पास करें: A से Z तक शीर्ष प्रश्न

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: आधुनिक डेवलपर के लिए TypeScript क्यों आवश्यक है

\n

TypeScript ने एंटरप्राइज़ विकास में डी-फैक्टो मानक के रूप में अपनी जगह मजबूती से बना ली है। Stack Overflow सर्वेक्षणों के अनुसार, 70% से अधिक फ्रंटएंड डेवलपर TypeScript का उपयोग करते हैं या उपयोग करने की योजना बनाते हैं। साक्षात्कारों में इस तकनीक पर प्रश्न पूछे जाना आम बात है - भले ही नौकरी औपचारिक रूप से "JavaScript Developer" के रूप में सूचीबद्ध हो।

\n

इस लेख में, हम उन प्रमुख विषयों पर चर्चा करेंगे जो तकनीकी साक्षात्कार में आपसे निश्चित रूप से पूछे जाएंगे: बुनियादी प्रकारों से लेकर जटिल जेनेरिक और सशर्त प्रकारों तक। सामग्री "सरल से जटिल" के सिद्धांत पर बनाई गई है, ताकि आप व्यवस्थित रूप से तैयारी कर सकें।

\n\n

1. आधार: प्रकार, इंटरफ़ेस और उनके अंतर

\n

1.1. आदिम और विशेष प्रकार

\n

मूल बातों से शुरू करते हैं। साक्षात्कारकर्ता लगभग निश्चित रूप से any, unknown, never और void के बारे में पूछेगा।

\n
    \n
  • any — प्रकार की जाँच को अक्षम करता है। केवल माइग्रेशन के दौरान अंतिम उपाय के रूप में उपयोग किया जाता है।
  • \n
  • unknown — any का सुरक्षित विकल्प। उपयोग से पहले प्रकार की जाँच की आवश्यकता होती है।
  • \n
  • never — वह प्रकार जो कभी नहीं होता (फ़ंक्शन जो अपवाद फेंकते हैं, या अनंत लूप)।
  • \n
  • void — फ़ंक्शन से वापसी मान की अनुपस्थिति।
  • \n
\n
function throwError(msg: string): never {\n    throw new Error(msg);\n}\n\nfunction log(msg: string): void {\n    console.log(msg);\n}\n\nlet data: unknown = JSON.parse('{"name":"John"}');\n// data.name // त्रुटि! जाँच आवश्यक है\nif (typeof data === 'object' && data !== null) {\n    console.log((data as Record<string, unknown>).name);\n}
\n\n

1.2. Interface बनाम Type: क्या चुनें?

\n

यह एक क्लासिक प्रश्न है। दोनों दृष्टिकोण किसी ऑब्जेक्ट की संरचना का वर्णन करने की अनुमति देते हैं, लेकिन इसमें बारीकियाँ हैं:

\n
    \n
  • Interface — विस्तार योग्य (extends), इसे मर्ज किया जा सकता है (declaration merging)।
  • \n
  • Type — union-प्रकार, intersection, आदिम का वर्णन कर सकता है। declaration merging के अधीन नहीं है।
  • \n
\n
// Interface - विस्तार\ninterface User {\n    name: string;\n}\ninterface User {\n    age: number; // declaration merging\n}\nconst user: User = { name: 'Alice', age: 30 };\n\n// Type - union\ntype Status = 'active' | 'inactive';\ntype UserOrStatus = User | Status;
\n

सुझाव: ऑब्जेक्ट और क्लास के लिए interface का उपयोग करें, जटिल संयोजनों के लिए type का।

\n\n

2. जेनेरिक और उपयोगिता प्रकार

\n

2.1. जेनेरिक: सामान्यीकृत प्रोग्रामिंग

\n

जेनेरिक के बिना कोई भी गंभीर साक्षात्कार पूरा नहीं होता। एक प्रकार लिखने की क्षमता जो पारित तर्क के अनुकूल हो, डेवलपर की परिपक्वता का संकेत है।

\n
// सरल जेनेरिक\nfunction identity<T>(arg: T): T {\n    return arg;\n}\n\n// जेनेरिक की सीमा\nfunction getLength<T extends { length: number }>(arg: T): number {\n    return arg.length;\n}\n\n// ऐरे के लिए जेनेरिक\nfunction last<T>(arr: T[]): T | undefined {\n    return arr[arr.length - 1];\n}
\n

अक्सर infer के बारे में पूछा जाता है - सशर्त निर्माणों के अंदर प्रकार निकालने के लिए कीवर्ड:

\n
// Promise से तत्व प्रकार निकालें\ntype Unwrap<T> = T extends Promise<infer U> ? U : T;\ntype Result = Unwrap<Promise<number>>; // number
\n\n

2.2. उपयोगिता प्रकार (Utility Types)

\n

अंतर्निहित उपयोगिताओं का ज्ञान अनिवार्य न्यूनतम है। साक्षात्कारकर्ता आपको मैन्युअल रूप से एक एनालॉग लागू करने के लिए कह सकता है।

\n
    \n
  • Partial<T> — सभी फ़ील्ड वैकल्पिक हो जाते हैं।
  • \n
  • Required<T> — सभी फ़ील्ड अनिवार्य हो जाते हैं।
  • \n
  • Pick<T, K> — केवल निर्दिष्ट कुंजियाँ चुनता है।
  • \n
  • Omit<T, K> — निर्दिष्ट कुंजियों को हटा देता है।

ब्लॉग

पुस्तक अनुशंसाएँ