தொகுதி பாடங்கள் (2/2)
பயன்பாட்டு வகைகள்
பொதுவான வகை மாற்றங்களை எளிதாக்க டைப்ஸ்கிரிப்ட் பல உலகளாவிய பயன்பாட்டு வகைகளை வழங்குகிறது. இந்த வகைகள் பொதுவானவை மற்றும் ஏற்கனவே உள்ளவற்றிலிருந்து புதிய வகைகளை பிரகடனமாக உருவாக்க உங்களை அனுமதிக்கின்றன.
பொதுவாகப் பயன்படுத்தப்படும் நான்கு பயன்பாட்டு வகைகள்:
1. Partial<T>
ஒரு வகையின் அனைத்து பண்புகளையும் T விரும்பினால் செய்கிறது. புதுப்பித்தல்/பேட்ச் செயல்பாடுகளுக்கு இது மிகவும் பயனுள்ளதாக இருக்கும், அங்கு அழைப்பாளர் புலங்களின் துணைக்குழுவை மட்டுமே வழங்க முடியும்:
interface User {
id: number;
name: string;
email: string;
}
// All properties of User become optional: { id?: number; name?: string; email?: string; }
type UserUpdate = Partial<User>;2. Readonly<T>
ஒரு வகையின் அனைத்து பண்புகளையும் T படிக்க மட்டும் செய்கிறது. ஒரு சொத்தை மறு ஒதுக்கீடு செய்வதற்கான எந்த முயற்சியும் தொகுக்கும் நேர கம்பைலர் பிழையைத் தூண்டும்:
interface Point {
x: number;
y: number;
}
const p: Readonly<Point> = { x: 10, y: 20 };
// p.x = 5; // Error: cannot assign to 'x' because it is a read-only property3. Pick<T, Keys>
T வகையிலிருந்து ஒரு குறிப்பிட்ட விசைகளின் தொகுப்பை (சரம் யூனியன் பிரதிநிதித்துவப்படுத்துகிறது) மட்டும் தேர்ந்தெடுப்பதன் மூலம் ஒரு வகையை உருவாக்குகிறது:
interface Article {
id: number;
title: string;
content: string;
views: number;
}
// Selects only 'title' and 'views': { title: string; views: number; }
type ArticlePreview = Pick<Article, 'title' | 'views'>;4. Omit<T, Keys>
T வகையிலிருந்து ஒரு குறிப்பிட்ட விசைகளை அகற்றுவதன் மூலம் ஒரு வகையை உருவாக்குகிறது. இது Pick இன் இரட்டை:
interface Product {
id: number;
name: string;
price: number;
secretVendorCode: string;
}
// Removes 'secretVendorCode': { id: number; name: string; price: number; }
type PublicProduct = Omit<Product, 'secretVendorCode'>;5. Record<Keys, Type>
சொத்து விசைகள் Keys மற்றும் சொத்து மதிப்புகள் Type ஆக இருக்கும் பொருள் வகையை உருவாக்குகிறது. மதிப்புகளுக்கு விசைகளை மேப்பிங் செய்வதற்கு, அகராதிகள் அல்லது ஹாஷ் அட்டவணைகளை (முக்கிய மதிப்பு வரைபடங்கள்) பிரதிநிதித்துவப்படுத்துவதற்கு இது மிகவும் பயனுள்ளதாக இருக்கும்:
type Page = 'home' | 'about' | 'contact';
interface PageInfo {
title: string;
}
// Creates a dictionary with keys 'home' | 'about' | 'contact' and values PageInfo
const nav: Record<Page, PageInfo> = {
home: { title: 'Home Page' },
about: { title: 'About Us' },
contact: { title: 'Contact Us' },
};நீங்களே முயற்சி செய்து பாருங்கள்
பயிற்சி 1: பகுதியுடன் சுயவிவரப் புதுப்பிப்பு
அசல் சுயவிவரம் (சுயவிவரம்) மற்றும் புதுப்பிப்பு பொருள் (புதுப்பிப்புகள்) ஆகியவற்றை ஏற்கும் updateProfile செயல்பாட்டை முடிக்கவும், அங்கு சுயவிவரத்தின் அனைத்து புலங்களும் விருப்பமாக இருக்கும். புதுப்பிப்புகளுடன் அசல் பண்புகளை இணைக்கும் புதிய சுயவிவரப் பொருளை இது வழங்க வேண்டும்.
குறிப்பைக் காட்டு
அப்டேட்கள் அளவுருவிற்கு பகுதி<Profile> பயன்பாட்டு வகையையும், ஆப்ஜெக்ட்களை ஒன்றிணைக்க ஸ்ப்ரெட் ஆபரேட்டரையும் பயன்படுத்தவும்: { ...அசல், ...புதுப்பிப்புகள் }.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
பயிற்சி 2: ஒமிட் மூலம் உணர்திறன் புலங்களை அகற்றுதல்
UserAccount வகையைப் பொறுத்தவரை, முக்கியமான கடவுச்சொல்Hash பண்புகளைத் தவிர்க்கும் SafeUser என்ற வகை மாற்றுப்பெயரை வரையறுக்கவும்.
குறிப்பைக் காட்டு
SafeUser வகையைப் பயன்படுத்தவும் = தவிர்க்கவும்<UserAccount, 'passwordHash'>; குறிப்பிட்ட புலத்தைத் தவிர்க்க.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
பயிற்சி 3: தேர்வு மற்றும் படிக்க மட்டும் பொது கட்டமைப்பு
AppConfig வகையைப் பொறுத்தவரை, PublicConfig எனப் பெயரிடப்பட்ட ஒரு வகை மாற்றுப்பெயரை வரையறுக்கவும், இது Pick ஐப் பயன்படுத்தி தேர்ந்தெடுக்கப்பட்ட apiEndpoint மற்றும் போர்ட் பண்புகளை மட்டுமே கொண்ட படிக்க-மட்டும் (படிக்க மட்டும்) பதிப்பாகும்.
குறிப்பைக் காட்டு
வகையைப் பயன்படுத்தவும் PublicConfig = படிக்க மட்டும்<Pick<AppConfig, 'apiEndpoint' | 'போர்ட்'>>;
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
பயிற்சி 4: பதிவு மற்றும் படிக்க மட்டும் கொண்ட பயனர் பதிவேடு
புலங்கள் ஐடி: எண் மற்றும் பெயர்: சரம் கொண்ட பயனர் இடைமுகம் கொடுக்கப்பட்டால், அனைத்து புலங்களையும் பயனர் படிக்க மட்டும் செய்யும் ReadOnlyUser வகையை உருவாக்கவும். பின்னர், விசை ஒரு சரமாக இருக்கும் (எ.கா., சரம் ஐடி) மற்றும் மதிப்பானது ReadOnlyUser ஆக இருக்கும் அகராதியைக் குறிக்கும் வகை UserRegistry ஐ உருவாக்கவும்.
குறிப்பைக் காட்டு
ReadOnlyUser ஐ வரையறுக்க Readonly<User> ஐப் பயன்படுத்தவும், பதிவேட்டில் <string, ReadOnlyUser> ஐப் பதிவு செய்யவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்