React में सशर्त और मैप किए गए टाइप
सशर्त टाइप से ऐसे कंपोनेंट प्रॉप टाइप बनाएँ जिनका आकार अन्य प्रॉप मानों के आधार पर बदलता हो।
React में सशर्त और मैप किए गए टाइप, CoddyKit पर React Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह React Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
सशर्त प्रकारों की मूल बातें
सशर्त प्रकार T extends U ? X : Y सिंटैक्स का उपयोग करता है — यदि T को U में असाइन किया जा सकता है, तो प्रकार का परिणाम X होता है; अन्यथा Y।
type IsString<T> = T extends string ? true : false;
type A = IsString<string>; // true
type B = IsString<number>; // false
type C = IsString<'hello'>; // trueअन्य प्रॉप्स के आधार पर सशर्त प्रॉप्स
किसी अन्य प्रॉप के मान के आधार पर किसी प्रॉप को आवश्यक या वैकल्पिक बनाने के लिए सशर्त प्रकारों का उपयोग करें।
type InputProps<T extends 'text' | 'number'> = {
type: T;
} & (T extends 'number' ? { min?: number; max?: number } : { maxLength?: number });
const numInput: InputProps<'number'> = { type: 'number', min: 0, max: 100 };
const txtInput: InputProps<'text'> = { type: 'text', maxLength: 50 };मैप किए गए प्रकार
मैप किए गए प्रकार किसी मौजूदा प्रकार की हर प्रॉपर्टी को बदलकर एक नया प्रकार बनाते हैं। in keyof सिंटैक्स सभी कुंजियों पर चलता है।
type Optional<T> = { [K in keyof T]?: T[K] };
type Readonly<T> = { readonly [K in keyof T]: T[K] };
type Nullable<T> = { [K in keyof T]: T[K] | null };अपडेट फ़ॉर्म के लिए प्रॉप्स को वैकल्पिक बनाना
अपडेट फ़ॉर्म के प्रॉप्स में सभी फ़ील्ड आवश्यक न होने पर Partial<T> (अंतर्निर्मित मैप किया गया प्रकार) का उपयोग करें।
interface User { id: string; name: string; email: string; role: string; }
// Update form — all fields optional:
type UserUpdateProps = Partial<Omit<User, 'id'>>;
function UserUpdateForm(props: UserUpdateProps) {
// name, email, role are all optional
}मैप किए गए प्रकारों के साथ Record
ऐसे लुकअप प्रकार बनाएँ जिनकी कुंजियाँ किसी यूनियन से आती हों और जिनके मानों का आकार एकसमान हो।
type Status = 'idle' | 'loading' | 'success' | 'error';
type StatusConfig = Record<Status, {
label: string;
icon: React.ReactNode;
color: string;
}>;
const statusConfig: StatusConfig = {
idle: { label: 'Ready', icon: <ReadyIcon />, color: 'gray' },
loading: { label: 'Loading...', icon: <Spinner />, color: 'blue' },
success: { label: 'Done', icon: <CheckIcon />, color: 'green' },
error: { label: 'Error', icon: <XIcon />, color: 'red' },
};आवश्यक कुंजियाँ चुनना
किसी प्रकार की केवल आवश्यक कुंजियाँ निकालने के लिए -? (वैकल्पिक हटाएँ) के साथ सशर्त प्रकारों का उपयोग करें।
type RequiredKeys<T> = {
[K in keyof T]-?: undefined extends T[K] ? never : K;
}[keyof T];
interface FormData { name: string; email: string; phone?: string; }
type Required = RequiredKeys<FormData>; // 'name' | 'email'टेम्पलेट लिटरल प्रकार
टेम्पलेट लिटरल प्रकार स्ट्रिंग लिटरल प्रकारों का संयोजन करते हैं, जिससे टाइप किए गए इवेंट नाम, CSS क्लास स्ट्रिंग और एपीआई पाथ संभव होते हैं।
type EventName = 'click' | 'change' | 'focus';
type HandlerName = `on${Capitalize<EventName>}`;
// 'onClick' | 'onChange' | 'onFocus'
type ApiPath<R extends string> = `/api/${R}`;
type UserPath = ApiPath<'users'>; // '/api/users'सशर्त रूप से प्रॉप्स निकालना
यूनियन प्रकारों को फ़िल्टर करने के लिए Extract और Exclude का उपयोग करें।
type AllProps = 'onClick' | 'onHover' | 'onChange' | 'style';
type EventHandlers = Extract<AllProps, `on${string}`>;
// 'onClick' | 'onHover' | 'onChange'
type NonEventProps = Exclude<AllProps, `on${string}`>;
// 'style'फ़ॉर्म सत्यापन के लिए मैप किए गए प्रकार
ऐसे सत्यापन-त्रुटि प्रकार बनाएँ जो आपके फ़ॉर्म डेटा के आकार से मेल खाते हों — हर फ़ील्ड के लिए एक त्रुटि संदेश स्ट्रिंग।
interface LoginForm { email: string; password: string; }
type FormErrors<T> = { [K in keyof T]?: string };
type LoginErrors = FormErrors<LoginForm>;
// { email?: string; password?: string }
const errors: LoginErrors = { email: 'Invalid email format' };भेद-निर्धारक मैप किए गए प्रकार
भेद-निर्धारक के आधार पर आकार बदलने वाले प्रकार बनाने के लिए मैप किए गए प्रकारों को सशर्त प्रकारों के साथ मिलाएँ।
type EventMap = {
click: { x: number; y: number };
keydown: { key: string; code: string };
resize: { width: number; height: number };
};
type Handler<E extends keyof EventMap> = (event: EventMap[E]) => void;
function on<E extends keyof EventMap>(event: E, handler: Handler<E>) {
window.addEventListener(event, handler as EventListener);
}प्रकारों को जरूरत से ज़्यादा जटिल न बनाने का समय
सशर्त और मैप किए गए प्रकार शक्ति के साथ जटिलता भी बढ़ाते हैं। इनका उपयोग तभी करें जब वे वास्तविक दोहराव समाप्त करें या वास्तविक बग रोकें — केवल TypeScript का ज्ञान दिखाने के लिए नहीं।
त्वरित जाँच
मैप किया गया प्रकार { [K in keyof T]?: T[K] } क्या करता है?
पुनरावलोकन
सशर्त प्रकार (T extends U ? X : Y) असाइन किए जा सकने योग्य होने के आधार पर शाखाएँ बनाने वाले प्रकार तैयार करते हैं। मैप किए गए प्रकार ([K in keyof T]) किसी प्रकार की हर प्रॉपर्टी को बदलते हैं। इनका उपयोग अपडेट-फ़ॉर्म के आंशिक प्रकारों, टाइप किए गए इवेंट मैप, फ़ॉर्म-त्रुटि के आकार और टेम्पलेट लिटरल एपीआई पाथ के लिए करें।
एआई शिक्षक के साथ React सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 88
- पाठ
- 324
अक्सर पूछे जाने वाले प्रश्न
क्या “React में सशर्त और मैप किए गए टाइप” पाठ निःशुल्क है?
हाँ—“React में सशर्त और मैप किए गए टाइप” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और React Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“React में सशर्त और मैप किए गए टाइप” में मैं क्या सीखूँगा?
सशर्त टाइप से ऐसे कंपोनेंट प्रॉप टाइप बनाएँ जिनका आकार अन्य प्रॉप मानों के आधार पर बदलता हो। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ React Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या React Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर React Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“React में सशर्त और मैप किए गए टाइप” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस React Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर React Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- कंपोनेंट वैरिएंट के लिए विभेदित यूनियन
- React में सशर्त और मैप किए गए टाइप
- 'as' प्रॉप वाले बहुरूपी कंपोनेंट
- टाइप-सुरक्षित फ़ॉर्म और API प्रतिक्रिया अनुबंध