தொகுதி பாடங்கள் (2/2)
இலக்கிய வகைகள் மற்றும் கூற்றுகள்
டைப்ஸ்கிரிப்ட் மாறிகளின் சாத்தியமான மதிப்புகளைக் குறைக்க மேம்பட்ட கருவிகளை வழங்குகிறது மற்றும் தேவைப்படும்போது மேலும் குறிப்பிட்ட வகைகளை அங்கீகரிக்க கம்பைலரை கட்டாயப்படுத்துகிறது.
இலக்கிய வகைகள்
ஒரு எழுத்து வகை ஒரு துல்லியமான, ஒற்றை மதிப்பைக் குறிக்கிறது (எடுத்துக்காட்டாக, ஒரு குறிப்பிட்ட சரம் அல்லது எண்). அவை பொதுவாக தொழிற்சங்க வகைகளுடன் இணைக்கப்படுகின்றன:
type TrafficLight = 'red' | 'yellow' | 'green';
let light: TrafficLight;
light = 'red'; // OK
light = 'blue'; // Error: "blue" is not assignable to TrafficLightவலியுறுத்தல் வகை (as)
சில சமயங்களில் தொகுக்கும் நேரத்தில் TypeScript அறிய முடியாத வகையைப் பற்றிய தகவல் உங்களிடம் இருக்கும். இந்தச் சமயங்களில், as முக்கிய சொல்லைப் பயன்படுத்தி வகை வலியுறுத்தலை பயன்படுத்தலாம்:
const myCanvas = document.getElementById('main_canvas') as HTMLCanvasElement;உறுதிப்படுத்தல் தொகுப்பாளரிடம் கூறுகிறது: "என்னை நம்புங்கள், இந்த உறுப்பு ஒரு HTMLCanvasElement என்று எனக்குத் தெரியும்". இது இயக்க நேரத்தில் எந்த காசோலைகளையும் அல்லது வார்ப்புகளையும் செய்யாது; இது வகை சரிபார்ப்பிற்கு மட்டுமே உதவுகிறது.
உறுதிப்பாடுகள் (as const)
const உடன் ஒரு பொருள் அல்லது அணிவரிசையை நாம் அறிவிக்கும் போது, டைப்ஸ்கிரிப்ட் அதன் உள் பண்புகளை மாற்ற அனுமதிக்கிறது. முடிவில் as const ஐச் சேர்ப்பதன் மூலம், முழு அமைப்பும் உறைந்து படிக்க மட்டும் ஆக்கப்பட்டு, அனைத்து பண்புகளையும் அவற்றின் சரியான எழுத்து வகைகளாக மாற்றுகிறது:
const colors = ['red', 'green', 'blue'] as const;
// colors[0] = "yellow"; // Error: array is read-onlyடெம்ப்ளேட் இலக்கிய வகைகள்
டெம்ப்ளேட் நேரடி வகைகள் ஜாவாஸ்கிரிப்ட் டெம்ப்ளேட் சரங்களின் மேல் கட்டப்பட்டுள்ளன, ஆனால் அவை வகை நிலைகளில் பயன்படுத்தப்படுகின்றன. அவை பல நேரடி வகைகளை ஒன்றாக இணைக்க அனுமதிக்கின்றன:
type Size = 'small' | 'large';
type Color = 'red' | 'blue';
// Creates the union: "small-red" | "small-blue" | "large-red" | "large-blue"
type ItemId = `${Size}-${Color}`;டெம்ப்ளேட் இலக்கிய வகைகளில் சரம் பயன்பாடுகள்
டைப்ஸ்கிரிப்ட், டெம்ப்ளேட் லிட்டரல் வகைகளுக்குள் எழுத்துகளை கையாள சிறப்பு பயன்பாட்டு வகைகளை வழங்குகிறது:
Capitalize<StringType>: சரத்தின் முதல் எழுத்தை பெரியதாக்குகிறது.Uncapitalize<StringType>: சரத்தின் முதல் எழுத்தை அன் கேப்பிடலைஸ் செய்கிறது.Uppercase<StringType>: முழு சரத்தையும் பெரிய எழுத்துக்கு மாற்றுகிறது.Lowercase<StringType>: முழு சரத்தையும் சிற்றெழுத்துக்கு மாற்றும்.
type ActionType = 'click' | 'hover';
// Generates: "onClick" | "onHover"
type EventHandlers = `on${Capitalize<ActionType>}`;நீங்களே முயற்சி செய்து பாருங்கள்
பயிற்சி 1: திசை இலக்கிய ஒன்றியம்
'மேலே', 'கீழே', 'இடது' அல்லது 'வலது' சரங்களை மட்டுமே ஏற்கும் திசை என்ற பெயரிடப்பட்ட வகையை வரையறுக்கவும். பின் நகர்வு (dir: Direction) என்ற பெயரில் ஒரு செயல்பாட்டை அறிவிக்கவும்: சரம் 'மூவிங்' என்ற சரத்தைத் தொடர்ந்து பெறப்பட்ட திசையை வழங்கும்.
குறிப்பைக் காட்டு
| மூலம் பிரிக்கப்பட்ட நான்கு விருப்பங்களைக் கொண்டு முதலில் வகை மாற்றுப்பெயரை வரையறுக்கவும், பின்னர் அளவுரு மற்றும் திரும்பும் வகையைக் குறிக்கும் நகர்வு செயல்பாட்டை அறிவிக்கவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
பயிற்சி 2: JSON.parse மீது வலியுறுத்தல்
JSON.parse செயல்பாடு எந்த வகையையும் இயல்புநிலையாக வழங்கும். parseUser செயல்பாட்டை மாற்றியமைக்கவும், அதனால் JSON.parse(json) இன் முடிவு, முக்கிய சொல்லைப் பயன்படுத்தி வகை {பயனர்பெயர்: string} என வலியுறுத்தப்படும்.
குறிப்பைக் காட்டு
JSON.parse(json) அழைப்பிற்குப் பிறகு உடனடியாக '{ username: string }' எனச் சேர்க்கவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
பயிற்சி 3: நிகழ்வுகளுக்கான டெம்ப்ளேட் இலக்கியம்
நிலை மற்றும் செயல் வகைகளின் அடிப்படையில், நிகழ்வு என்ற டெம்ப்ளேட் சரம் வகையை 'நிலை-செயல்' வடிவத்தில் வரையறுக்கவும் (எடுத்துக்காட்டாக, 'திறந்த கிளிக்').
குறிப்பைக் காட்டு
வகையை வரையறுக்க பேக்டிக்குகளைப் பயன்படுத்தவும், உள்ளே ${Status}-${Action} தொடரியல்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
பயிற்சி 4: கேபிட்டலைஸ் கொண்ட டெம்ப்ளேட் லிட்டரல் வகை
'கிளிக்' அல்லது 'ஹோவர்' ஆக இருக்கக்கூடிய நேரடி வகை நிகழ்வை வரையறுக்கவும். பின்னர், கேப்பிட்டல் செய்யப்பட்ட நிகழ்வுப் பெயரைத் தொடர்ந்து (அதாவது, 'onClick' அல்லது 'onHover') வடிவத்தில் EventHandler ஐக் குறிக்கும் வகையை அறிவிக்க டெம்ப்ளேட் லிட்டரல் வகைகளைப் பயன்படுத்தவும்.
குறிப்பைக் காட்டு
நிகழ்வின் முதல் எழுத்தை பெரிய எழுத்தாக்க டெம்ப்ளேட்டின் உள்ளே Capitalize<Event> ஐப் பயன்படுத்தவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்