தொகுதி பாடங்கள் (2/2)
வரைபட வகைகள்
வரைபட வகைகள், ஏற்கனவே உள்ளவற்றின் பண்புகளை ஒவ்வொன்றாக மாற்றுவதன் மூலம் புதிய வகைகளை உருவாக்க உங்களை அனுமதிக்கின்றன. அவை keyof ஆபரேட்டரைப் பயன்படுத்தி விசைகளின் மேல் லூப் தொடரியல் மீது கட்டமைக்கப்பட்டுள்ளன.
type Mapped<T> = {
[P in keyof T]: T[P];
};இந்த உதாரணம் அசல் ஒன்றைப் போலவே வரைபட வகையைக் காட்டுகிறது: இது keyof T இல் உள்ள P ஒவ்வொரு விசையையும் மீண்டும் செயல்படுத்துகிறது மற்றும் அதே வகையை T[P] ஒதுக்குகிறது.
பிறழ்வு மற்றும் விருப்ப மாற்றிகள்
readonly மற்றும் ? (விரும்பினால்) போன்ற மாற்றிகளை + (சேர், இயல்புநிலை) அல்லது - (அகற்றுதல்) மூலம் நாம் சேர்க்கலாம் அல்லது அகற்றலாம்.
எடுத்துக்காட்டாக, ஒரு வகையின் அனைத்துப் பண்புகளிலிருந்தும் விருப்பத்தை அகற்ற (அவை தேவைப்படுதல்):
type Concrete<T> = {
[P in keyof T]-?: T[P];
};-? மாற்றியானது ஒவ்வொரு சொத்திலிருந்தும் விருப்பக் கொடியை நீக்குகிறது.
as உடன் முக்கிய மறுவடிவமைப்பு
டைப்ஸ்கிரிப்ட் 4.1+ இல், as உட்பிரிவு மற்றும் டெம்ப்ளேட் எழுத்து வகைகளைப் பயன்படுத்தி வரைபட வகைகளில் விசைகளை ரீமேப் செய்யலாம்.
type WriteSetters<T> = {
[K in keyof T as `set${Capitalize<string & K>}`]: (value: T[K]) => void;
};இங்கே நாம் ஒவ்வொரு சொத்தின் பெயரையும் K க்கு set[CapitalizedKey] என்று மாற்றி, அதன் வகையை செட்டர் செயல்பாட்டிற்கு மாற்றுகிறோம்.
நீங்களே முயற்சி செய்து பாருங்கள்
பயிற்சி 1: பண்புகளை நீக்குதல்
ஒரு பொருளை T ஐ எடுத்து ஒவ்வொரு சொத்தையும் மாற்றும் ஒரு பொதுவான வரைபட வகை Nullable<T>ஐ அறிவிக்கவும், இதனால் அது மதிப்பு பூஜ்யத்தையும் ஏற்க முடியும் (எ.கா. T[K] | பூஜ்யம்).
குறிப்பைக் காட்டு
தொடரியல் [K இல் T]: T[K] | பூஜ்ய; வரைபட வகை பொருளின் உள்ளே.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
பயிற்சி 2: as மூலம் டைனமிக் கெட்டர்களை உருவாக்குதல்
GetterNames<T> என்ற பெயரிடப்பட்ட மேப் செய்யப்பட்ட வகையை உருவாக்கவும், இது T பொருளின் விசைகளை 'get' உடன் முன்னொட்டாக மாற்றி அசல் விசையை பெரியதாக்கி மாற்றும் (Capitalize ஐப் பயன்படுத்தவும்). எடுத்துக்காட்டாக, ஒரு விசை பெயர் என்றால், அது getName ஆக வேண்டும். பண்புகளின் வகையை () => T[K] என அமைக்கவும்.
குறிப்பைக் காட்டு
விசையை ரீமேப் செய்ய \`get\${Capitalize<string & K>}\` ஆகவும், () => T[K] சொத்து திரும்பும் வகையாகவும் பயன்படுத்தவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்