మాడ్యూల్ పాఠాలు (1/2)
షరతులతో కూడిన రకాలు మరియు అంచనా
షరతులతో కూడిన రకాలు వారసత్వ సంబంధాల ఆధారంగా అల్పమైన రకం నిర్ణయాలను వ్యక్తీకరించడానికి మిమ్మల్ని అనుమతిస్తాయి. వాక్యనిర్మాణం జావాస్క్రిప్ట్ యొక్క టెర్నరీ ఆపరేటర్ని పోలి ఉంటుంది:
T extends U ? X : YT రకం Uకి కేటాయించబడితే, ఫలితంగా వచ్చే రకం X అవుతుంది, లేకుంటే అది Y అవుతుంది.
ప్రాథమిక షరతులతో కూడిన రకాలు
ఒక షరతులతో కూడిన రకం కంపైల్ సమయంలో పరిస్థితిని అంచనా వేస్తుంది:
type IsNumber<T> = T extends number ? true : false;
type A = IsNumber<number>; // true
type B = IsNumber<string>; // falseఫ్లెక్సిబుల్ మరియు డైనమిక్ యుటిలిటీ రకాలను రూపొందించడానికి జెనరిక్స్తో కలిపి ఉన్నప్పుడు ఈ నమూనా చాలా శక్తివంతమైనది.
inferతో సంగ్రహాన్ని టైప్ చేయండి
షరతులతో కూడిన రకం యొక్క extends నిబంధన లోపల, కంపైలర్ ద్వారా ఊహించబడే రకం వేరియబుల్ని ప్రకటించడానికి మేము infer కీవర్డ్ని ఉపయోగించవచ్చు.
ఉదాహరణకు, మేము ఫంక్షన్ యొక్క రిటర్న్ రకాన్ని సంగ్రహించాలనుకుంటే:
type GetReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
type ExampleFunction = () => string;
type Return = GetReturnType<ExampleFunction>; // stringఈ ఉదాహరణలో, infer R ఫంక్షన్ యొక్క రిటర్న్ రకాన్ని స్వయంచాలకంగా గుర్తించి, షరతులకు సంబంధించిన సానుకూల శాఖలో Rగా అందుబాటులో ఉంచమని టైప్స్క్రిప్ట్కి చెబుతుంది.
మీరే ప్రయత్నించండి
వ్యాయామం 1: IsString రకం
IsString<T> అనే పేరుగల జెనరిక్ రకాన్ని సృష్టించండి, అది T స్ట్రింగ్ను పొడిగిస్తే నిజమైన రకాన్ని అందిస్తుంది, లేకపోతే తప్పు.
సూచనను చూపించు
సింటాక్స్ రకాన్ని ఉపయోగించండి IsString<T> = T స్ట్రింగ్ని విస్తరించాలా ? నిజం: తప్పు; రకాన్ని తనిఖీ చేయడానికి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
వ్యాయామం 2: inferతో అర్రే నుండి రకాన్ని సంగ్రహించడం
శ్రేణి T యొక్క మూలకం రకాన్ని సంగ్రహించడానికి అన్ప్యాక్అర్రే<T> అనే సాధారణ రకాన్ని నిర్వచించండి. T అనేది శ్రేణి అయితే (ఉదాహరణకు U[]), Uని తిరిగి ఇవ్వండి, లేకపోతే అదే రకం Tని తిరిగి ఇవ్వండి.
సూచనను చూపించు
T పొడిగింపులను ఉపయోగించాలా (అనుమానం U)[] ? U : T ఊహించిన రకం వేరియబుల్ Uని ప్రకటించడానికి మరియు తిరిగి ఇవ్వడానికి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది