முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 6 · பாடம் 1 இன் 2பாடத்திட்டத்தில் 11/14~15 min
தொகுதி பாடங்கள் (1/2)

நிபந்தனை வகைகள் மற்றும் அனுமானம்

பரம்பரை உறவுகளின் அடிப்படையில் அற்பமான வகை முடிவுகளை வெளிப்படுத்த நிபந்தனை வகைகள் உங்களை அனுமதிக்கின்றன. தொடரியல் ஜாவாஸ்கிரிப்ட்டின் மும்மை ஆபரேட்டரை ஒத்திருக்கிறது:

TS
T extends U ? X : Y

T வகை Uக்கு ஒதுக்கப்பட்டால், அதன் விளைவாக வரும் வகை X ஆக இருக்கும், இல்லையெனில் அது Y ஆக இருக்கும்.


அடிப்படை நிபந்தனை வகைகள்

ஒரு நிபந்தனை வகை தொகுக்கும் நேரத்தில் ஒரு நிபந்தனையை மதிப்பிடுகிறது:

TS
type IsNumber<T> = T extends number ? true : false;

type A = IsNumber<number>; // true
type B = IsNumber<string>; // false

நெகிழ்வான மற்றும் ஆற்றல்மிக்க பயன்பாட்டு வகைகளை உருவாக்க, ஜெனரிக்ஸுடன் இணைந்து இந்த முறை மிகவும் சக்தி வாய்ந்தது.


infer உடன் பிரித்தெடுத்தலைத் தட்டச்சு செய்க

ஒரு நிபந்தனை வகையின் extends உட்பிரிவின் உள்ளே, கம்பைலரால் அனுமானிக்கப்படும் வகை மாறியை அறிவிக்க நாம் infer முக்கிய சொல்லைப் பயன்படுத்தலாம்.

எடுத்துக்காட்டாக, ஒரு செயல்பாட்டின் திரும்பும் வகையைப் பிரித்தெடுக்க விரும்பினால்:

TS
type GetReturnType<T> = T extends (...args: any[]) => infer R ? R : never;

type ExampleFunction = () => string;
type Return = GetReturnType<ExampleFunction>; // string

இந்த எடுத்துக்காட்டில், infer R, செயல்பாட்டின் திரும்பும் வகையைத் தானாகக் கண்டறிந்து, நிபந்தனையின் நேர்மறைக் கிளையில் R ஆகக் கிடைக்கும்படி டைப்ஸ்கிரிப்டைச் சொல்கிறது.


நீங்களே முயற்சி செய்து பாருங்கள்

பயிற்சி 1: IsString வகை

உடற்பயிற்சி#ts.m6.l1.e1
முயற்சிகள்: 0ஏற்றுகிறது…

IsString<T> என்ற பெயரிடப்பட்ட பொதுவான வகையை உருவாக்கவும், இது T சரத்தை நீட்டினால் உண்மை வகையை வழங்கும், இல்லையெனில் தவறு.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

தொடரியல் வகையைப் பயன்படுத்தவும் IsString<T> = T நீட்டிக்கும் சரத்தை ? உண்மை : பொய்; வகையைச் சரிபார்க்க.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

பயிற்சி 2: infer உடன் ஒரு வரிசையிலிருந்து ஒரு வகையைப் பிரித்தெடுத்தல்

உடற்பயிற்சி#ts.m6.l1.e2
முயற்சிகள்: 0ஏற்றுகிறது…

ஒரு வரிசை T இன் உறுப்பு வகையைப் பிரித்தெடுக்க அனுமானைப் பயன்படுத்தும் UnpackArray<T> என்ற பொதுவான வகையை வரையறுக்கவும். T என்பது ஒரு வரிசையாக இருந்தால் (உதாரணமாக U[]), U ஐத் தரவும், இல்லையெனில் அதே வகை T ஐத் தரவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

டி நீட்டிப்புகளைப் பயன்படுத்தவும் (ஊகிக்க U)[] ? U : T என்பது யூகிக்கப்பட்ட வகை மாறி U ஐ அறிவித்து திருப்பி அனுப்பும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்