எண்ணுருக்களுக்கான சக்திவாய்ந்த டைப்ஸ்கிரிப்ட் மாற்றுகளை ஆராயுங்கள்: கான்ஸ்ட் அசெர்ஷன்ஸ் மற்றும் யூனியன் வகைகள். வலுவான, பராமரிக்கக்கூடிய குறியீட்டிற்கு ஒவ்வொன்றையும் எப்போது பயன்படுத்த வேண்டும் என்பதை அறிக.
எண்ணுருக்களுக்கு அப்பால்: டைப்ஸ்கிரிப்ட் கான்ஸ்ட் அசெர்ஷன்ஸ் vs யூனியன் வகைகள்
டைப்ஸ்கிரிப்ட்டுடன் கூடிய நிலையான வகை ஜாவாஸ்கிரிப்ட் உலகில், எண்ணுருக்கள் (enums) நீண்ட காலமாக பெயரிடப்பட்ட மாறிலிகளின் நிலையான தொகுப்பைக் குறிக்கப் பயன்படுத்தப்பட்டு வருகின்றன. அவை தொடர்புடைய மதிப்புகளின் தொகுப்பை வரையறுக்க தெளிவான மற்றும் படிக்கக்கூடிய வழியை வழங்குகின்றன. இருப்பினும், திட்டங்கள் வளரும்போது, டெவலப்பர்கள் பெரும்பாலும் மிகவும் நெகிழ்வான மற்றும் சில சமயங்களில் அதிக செயல்திறன் கொண்ட மாற்றுகளைத் தேடுகிறார்கள். அடிக்கடி வெளிவரும் இரண்டு சக்திவாய்ந்த போட்டியாளர்கள் கான்ஸ்ட் அசெர்ஷன்ஸ் (const assertions) மற்றும் யூனியன் வகைகள் (union types) ஆகும். இந்த இடுகை பாரம்பரிய எண்ணுருக்களுக்கு இந்த மாற்றுகளைப் பயன்படுத்துவதன் நுணுக்கங்களை ஆராய்ந்து, நடைமுறை உதாரணங்களை வழங்கி, எப்போது எதைத் தேர்வு செய்வது என்பதை உங்களுக்கு வழிகாட்டும்.
பாரம்பரிய டைப்ஸ்கிரிப்ட் எண்ணுருக்களைப் புரிந்துகொள்ளுதல்
மாற்றுகளை ஆராய்வதற்கு முன், நிலையான டைப்ஸ்கிரிப்ட் எண்ணுருக்கள் எவ்வாறு செயல்படுகின்றன என்பதைப் பற்றி உறுதியாகப் புரிந்துகொள்வது அவசியம். எண்ணுருக்கள் பெயரிடப்பட்ட எண் அல்லது சர மாறிலிகளின் தொகுப்பை வரையறுக்க உங்களை அனுமதிக்கின்றன. அவை எண்ணியல் (இயல்புநிலை) அல்லது சர அடிப்படையிலானவையாக இருக்கலாம்.
எண்ணியல் எண்ணுருக்கள்
இயல்பாக, எண்ணுரு உறுப்பினர்களுக்கு 0 இல் இருந்து தொடங்கும் எண் மதிப்புகள் ஒதுக்கப்படுகின்றன.
enum DirectionNumeric {
Up,
Down,
Left,
Right
}
let myDirection: DirectionNumeric = DirectionNumeric.Up;
console.log(myDirection); // Output: 0
நீங்கள் எண் மதிப்புகளையும் வெளிப்படையாக ஒதுக்கலாம்.
enum StatusCode {
Success = 200,
NotFound = 404,
InternalError = 500
}
let responseStatus: StatusCode = StatusCode.Success;
console.log(responseStatus); // Output: 200
சர எண்ணுருக்கள்
சர எண்ணுருக்கள் மேம்பட்ட பிழைத்திருத்த அனுபவத்திற்காக அடிக்கடி விரும்பப்படுகின்றன, ஏனெனில் தொகுக்கப்பட்ட ஜாவாஸ்கிரிப்டில் உறுப்பினர் பெயர்கள் பாதுகாக்கப்படுகின்றன.
enum ColorString {
Red = "RED",
Green = "GREEN",
Blue = "BLUE"
}
let favoriteColor: ColorString = ColorString.Blue;
console.log(favoriteColor); // Output: "BLUE"
எண்ணுருக்களின் கூடுதல் சுமை
எண்ணுருக்கள் வசதியானவை என்றாலும், அவை ஒரு சிறிய கூடுதல் சுமையுடன் வருகின்றன. ஜாவாஸ்கிரிப்டாக தொகுக்கப்படும்போது, டைப்ஸ்கிரிப்ட் எண்ணுருக்கள் பெரும்பாலும் தலைகீழ் மேப்பிங் (எ.கா., எண் மதிப்பை எண்ணுரு பெயருடன் மீண்டும் மேப்பிங் செய்தல்) கொண்ட பொருள்களாக மாற்றப்படுகின்றன. இது பயனுள்ளதாக இருக்கும், ஆனால் தொகுப்பு அளவிற்கும் பங்களிக்கிறது மற்றும் எப்போதும் அவசியமில்லை.
இந்த எளிய சர எண்ணுருவைக் கவனியுங்கள்:
enum Status {
Pending = "PENDING",
Processing = "PROCESSING",
Completed = "COMPLETED"
}
ஜாவாஸ்கிரிப்டில், இது இப்படி மாறலாம்:
var Status;
(function (Status) {
Status["Pending"] = "PENDING";
Status["Processing"] = "PROCESSING";
Status["Completed"] = "COMPLETED";
})(Status || (Status = {}));
நிலையான, படிக்க-மட்டும் மாறிலிகளின் தொகுப்பிற்கு, இந்த உருவாக்கப்பட்ட குறியீடு சற்று அதிகமாகத் தோன்றலாம்.
மாற்று 1: கான்ஸ்ட் அசெர்ஷன்ஸ்
கான்ஸ்ட் அசெர்ஷன்ஸ் என்பது ஒரு சக்திவாய்ந்த டைப்ஸ்கிரிப்ட் அம்சமாகும், இது ஒரு மதிப்புக்கான மிகவும் குறிப்பிட்ட வகையை தொகுப்பி கணிக்க அனுமதிக்கிறது. நிலையான மதிப்புகளின் தொகுப்பைக் குறிக்க வடிவமைக்கப்பட்ட வரிசைகள் அல்லது பொருள்களுடன் பயன்படுத்தப்படும்போது, அவை பாரம்பரிய எண்ணுருக்களுக்கு ஒரு இலகுரக மாற்றாக செயல்பட முடியும்.
வரிசைகளுடன் கான்ஸ்ட் அசெர்ஷன்ஸ்
நீங்கள் சர எழுத்துக்களின் வரிசையை உருவாக்கி, அதன் வகையை மாற்ற முடியாததாகவும், அதன் உறுப்புகளை எழுத்து வகைகளாகவும் மாற்ற const அசெர்ஷனைப் பயன்படுத்தலாம்.
const statusArray = ["PENDING", "PROCESSING", "COMPLETED"] as const;
type StatusType = typeof statusArray[number];
let currentStatus: StatusType = "PROCESSING";
// currentStatus = "FAILED"; // Error: Type '"FAILED"' is not assignable to type 'StatusType'.
function processStatus(status: StatusType) {
console.log(`Processing status: ${status}`);
}
processStatus("COMPLETED");
இங்கு என்ன நடக்கிறது என்பதைப் பார்ப்போம்:
as const: இந்த அசெர்ஷன் வரிசையை படிக்க-மட்டும் என டைப்ஸ்கிரிப்ட்டிடம் கூறுகிறது மற்றும் அதன் கூறுகளின் மிகவும் குறிப்பிட்ட எழுத்து வகைகளை கணிக்கிறது. எனவே,string[]என்பதற்கு பதிலாக, வகைreadonly ["PENDING", "PROCESSING", "COMPLETED"]ஆகிறது.typeof statusArray[number]: இது ஒரு மேப் செய்யப்பட்ட வகை. இதுstatusArrayஇன் அனைத்து குறியீடுகளிலும் செயல்படுகிறது மற்றும் அவற்றின் எழுத்து வகைகளை பிரித்தெடுக்கிறது.numberகுறியீட்டு கையொப்பம் அடிப்படையில் "இந்த வரிசையில் உள்ள எந்த உறுப்பின் வகையையும் எனக்குக் கொடு" என்று கூறுகிறது. இதன் விளைவாக ஒரு யூனியன் வகை வருகிறது:"PENDING" | "PROCESSING" | "COMPLETED".
இந்த அணுகுமுறை சர எண்ணுருக்களுக்கு ஒத்த வகை பாதுகாப்பை வழங்குகிறது, ஆனால் குறைந்தபட்ச ஜாவாஸ்கிரிப்டை உருவாக்குகிறது. statusArray ஜாவாஸ்கிரிப்டில் சரங்களின் வரிசையாகவே இருக்கும்.
பொருள்களுடன் கான்ஸ்ட் அசெர்ஷன்ஸ்
பொருள்களுக்குப் பயன்படுத்தப்படும்போது கான்ஸ்ட் அசெர்ஷன்ஸ் இன்னும் சக்திவாய்ந்தவை. நீங்கள் பெயரிடப்பட்ட மாறிலிகளைக் குறிக்கும் விசைகளையும், எழுத்து சரங்கள் அல்லது எண்களை மதிப்புகளாகவும் கொண்ட ஒரு பொருளை வரையறுக்கலாம்.
const userRoles = {
Admin: "ADMIN",
Editor: "EDITOR",
Viewer: "VIEWER"
} as const;
type UserRole = typeof userRoles[keyof typeof userRoles];
let currentUserRole: UserRole = "EDITOR";
// currentUserRole = "GUEST"; // Error: Type '"GUEST"' is not assignable to type 'UserRole'.
function displayRole(role: UserRole) {
console.log(`User role is: ${role}`);
}
displayRole(userRoles.Admin); // Valid
displayRole("EDITOR"); // Valid
இந்த பொருள் உதாரணத்தில்:
as const: இந்த அசெர்ஷன் முழு பொருளையும் படிக்க-மட்டும் ஆக்குகிறது. மிக முக்கியமாக, இது அனைத்து பண்பு மதிப்புகளுக்கும் (எ.கா.,stringக்கு பதிலாக"ADMIN") எழுத்து வகைகளைக் கணிக்கிறது மற்றும் பண்புகளையே படிக்க-மட்டும் ஆக மாற்றுகிறது.keyof typeof userRoles: இந்த வெளிப்பாடுuserRolesபொருளின் விசைகளின் யூனியனாக விளைகிறது, இது"Admin" | "Editor" | "Viewer"ஆகும்.typeof userRoles[keyof typeof userRoles]: இது ஒரு லுக்அப் வகை. இது விசைகளின் யூனியனை எடுத்து,userRolesவகையிலான தொடர்புடைய மதிப்புகளைப் பார்க்க அதைப் பயன்படுத்துகிறது. இது மதிப்புகளின் யூனியனாக விளைகிறது:"ADMIN" | "EDITOR" | "VIEWER", இது பாத்திரங்களுக்கான நமது விரும்பிய வகையாகும்.
userRoles க்கான ஜாவாஸ்கிரிப்ட் வெளியீடு ஒரு சாதாரண ஜாவாஸ்கிரிப்ட் பொருளாக இருக்கும்:
var userRoles = {
Admin: "ADMIN",
Editor: "EDITOR",
Viewer: "VIEWER"
};
இது ஒரு வழக்கமான எண்ணுருவை விட கணிசமாக இலகுவானது.
கான்ஸ்ட் அசெர்ஷன்ஸை எப்போது பயன்படுத்துவது
- படிக்க-மட்டும் மாறிலிகள்: இயக்க நேரத்தில் மாறாத, சர அல்லது எண் எழுத்துக்களின் நிலையான தொகுப்பு உங்களுக்குத் தேவைப்படும்போது.
- குறைந்தபட்ச ஜாவாஸ்கிரிப்ட் வெளியீடு: தொகுப்பு அளவு குறித்து நீங்கள் கவலைப்பட்டால் மற்றும் உங்கள் மாறிலிகளுக்கான அதிகபட்ச செயல்திறன் கொண்ட இயக்க நேர பிரதிநிதித்துவத்தை விரும்பினால்.
- பொருள் போன்ற கட்டமைப்பு: தரவு அல்லது உள்ளமைவைக் கட்டமைக்கும் விதத்தைப் போலவே, விசை-மதிப்பு ஜோடிகளின் வாசிப்புத்திறனை நீங்கள் விரும்பும்போது.
- சர அடிப்படையிலான தொகுப்புகள்: குறிப்பாக நிலைகள், வகைகள் அல்லது விளக்கமான சரங்களால் அடையாளம் காண சிறந்த வகைகளைக் குறிக்க பயனுள்ளதாக இருக்கும்.
மாற்று 2: யூனியன் வகைகள்
யூனியன் வகைகள் ஒரு மாறி பல வகைகளில் ஒரு மதிப்பை வைத்திருக்கலாம் என்று அறிவிக்க உங்களை அனுமதிக்கின்றன. எழுத்து வகைகளுடன் (சர, எண், பூலியன் எழுத்துக்கள்) இணைக்கப்படும்போது, அவை தொகுப்பிற்கான வெளிப்படையான மாறிலி அறிவிப்பு இல்லாமல் அனுமதிக்கப்பட்ட மதிப்புகளின் தொகுப்பை வரையறுக்க ஒரு சக்திவாய்ந்த வழியை உருவாக்குகின்றன.
சர எழுத்துக்களுடன் யூனியன் வகைகள்
நீங்கள் சர எழுத்துக்களின் யூனியனை நேரடியாக வரையறுக்கலாம்.
type TrafficLightColor = "RED" | "YELLOW" | "GREEN";
let currentLight: TrafficLightColor = "YELLOW";
// currentLight = "BLUE"; // Error: Type '"BLUE"' is not assignable to type 'TrafficLightColor'.
function changeLight(color: TrafficLightColor) {
console.log(`Changing light to: ${color}`);
}
changeLight("RED");
// changeLight("REDDY"); // Error
இது அனுமதிக்கப்பட்ட சர மதிப்புகளின் தொகுப்பை வரையறுப்பதற்கான மிகவும் நேரடி மற்றும் பெரும்பாலும் மிகவும் சுருக்கமான வழியாகும்.
எண் எழுத்துக்களுடன் யூனியன் வகைகள்
அதேபோல், நீங்கள் எண் எழுத்துக்களைப் பயன்படுத்தலாம்.
type HttpStatusCode = 200 | 400 | 404 | 500;
let responseCode: HttpStatusCode = 404;
// responseCode = 201; // Error: Type '201' is not assignable to type 'HttpStatusCode'.
function handleResponse(code: HttpStatusCode) {
if (code === 200) {
console.log("Success!");
} else {
console.log(`Error code: ${code}`);
}
}
handleResponse(500);
யூனியன் வகைகளை எப்போது பயன்படுத்துவது
- எளிய, நேரடி தொகுப்புகள்: அனுமதிக்கப்பட்ட மதிப்புகளின் தொகுப்பு சிறியதாகவும், தெளிவாகவும், மதிப்புகளுக்கு அப்பால் விளக்கமான விசைகள் தேவையில்லாதபோதும்.
- மறைமுக மாறிலிகள்: தொகுப்பிற்காக பெயரிடப்பட்ட மாறிலியைக் குறிப்பிடத் தேவையில்லாதபோது, மாறாக நேரடி எழுத்து மதிப்புகளைப் பயன்படுத்தும்போது.
- அதிகபட்ச சுருக்கம்: ஒரு பிரத்யேக பொருள் அல்லது வரிசையை வரையறுப்பது அதிகமாகத் தோன்றும் நேரடியான சூழ்நிலைகளுக்கு.
- செயல்பாடு அளவுருக்கள்/திரும்பப் பெறும் வகைகள்: செயல்பாடுகளுக்கான சரியான சரங்கள் அல்லது எண்களின் உள்ளீடுகள்/வெளியீடுகளை வரையறுப்பதற்கு சிறந்தது.
எண்ணுருக்கள், கான்ஸ்ட் அசெர்ஷன்ஸ் மற்றும் யூனியன் வகைகளை ஒப்பிடுதல்
முக்கிய வேறுபாடுகள் மற்றும் பயன்பாட்டு நிகழ்வுகளை சுருக்கமாகக் கூறுவோம்:
இயக்க நேர நடத்தை
- எண்ணுருக்கள்: ஜாவாஸ்கிரிப்ட் பொருள்களை உருவாக்குகின்றன, தலைகீழ் மேப்பிங்குகளுடன்.
- கான்ஸ்ட் அசெர்ஷன்ஸ் (வரிசைகள்/பொருள்கள்): சாதாரண ஜாவாஸ்கிரிப்ட் வரிசைகள் அல்லது பொருள்களை உருவாக்குகின்றன. வகை தகவல் இயக்க நேரத்தில் அழிக்கப்படுகிறது, ஆனால் தரவு கட்டமைப்பு அப்படியே இருக்கும்.
- யூனியன் வகைகள் (எழுத்துக்களுடன்): யூனியனுக்கான இயக்க நேர பிரதிநிதித்துவம் இல்லை. மதிப்புகள் எழுத்துக்கள் மட்டுமே. வகை சரிபார்ப்பு தொகுப்பு நேரத்தில் மட்டுமே நிகழ்கிறது.
வாசிப்புத்திறன் மற்றும் வெளிப்பாடு
- எண்ணுருக்கள்: விளக்கமான பெயர்களுடன் அதிக வாசிப்புத்திறன். மேலும் சொற்களால் ஆனதாக இருக்கலாம்.
- கான்ஸ்ட் அசெர்ஷன்ஸ் (பொருள்கள்): விசை-மதிப்பு ஜோடிகள் மூலம் நல்ல வாசிப்புத்திறன், உள்ளமைவுகள் அல்லது அமைப்புகளைப் பிரதிபலிக்கிறது.
- கான்ஸ்ட் அசெர்ஷன்ஸ் (வரிசைகள்): பெயரிடப்பட்ட மாறிலிகளைக் குறிக்க குறைவான வாசிப்புத்திறன், மதிப்புகளின் வரிசைப்படுத்தப்பட்ட பட்டியலுக்கு அதிகம்.
- யூனியன் வகைகள்: மிகவும் சுருக்கமானவை. வாசிப்புத்திறன் எழுத்து மதிப்புகளின் தெளிவைப் பொறுத்தது.
வகை பாதுகாப்பு
- மூன்று அணுகுமுறைகளும் வலுவான வகை பாதுகாப்பை வழங்குகின்றன. அவை மாறிலிகள் அல்லது செயல்பாடுகளுக்கு அனுப்பப்படும் மதிப்புகளை மட்டுமே உறுதி செய்கின்றன.
தொகுப்பு அளவு
- எண்ணுருக்கள்: உருவாக்கப்பட்ட ஜாவாஸ்கிரிப்ட் பொருள்கள் காரணமாக பொதுவாக மிகப்பெரியது.
- கான்ஸ்ட் அசெர்ஷன்ஸ்: அவை சாதாரண தரவு கட்டமைப்புகளை உற்பத்தி செய்வதால், எண்ணுருக்களை விட சிறியவை.
- யூனியன் வகைகள்: வகைக்கான குறிப்பிட்ட இயக்க நேர தரவு கட்டமைப்பை உருவாக்காததால், மிகச்சிறியது, எழுத்து மதிப்புகளை மட்டுமே சார்ந்துள்ளது.
பயன்பாட்டு நிகழ்வு அணி
இதோ ஒரு விரைவான வழிகாட்டி:
| அம்சம் | டைப்ஸ்கிரிப்ட் எண்ணுரு | கான்ஸ்ட் அசெர்ஷன் (பொருள்) | கான்ஸ்ட் அசெர்ஷன் (வரிசை) | யூனியன் வகை (எழுத்துக்கள்) |
|---|---|---|---|---|
| இயக்க நேர வெளியீடு | JS பொருள் (தலைகீழ் மேப்பிங்குடன்) | சாதாரண JS பொருள் | சாதாரண JS வரிசை | இல்லை (எழுத்து மதிப்புகள் மட்டுமே) |
| வாசிப்புத்திறன் (பெயரிடப்பட்ட மாறிலிகள்) | அதிகம் | அதிகம் | நடுத்தரம் | குறைவு (மதிப்புகள் பெயர்கள்) |
| தொகுப்பு அளவு | மிகப்பெரியது | நடுத்தரம் | நடுத்தரம் | மிகச்சிறியது |
| நெகிழ்வுத்தன்மை | நன்றாக | நன்றாக | நன்றாக | சிறப்பானது (எளிய தொகுப்புகளுக்கு) |
| பொதுவான பயன்பாடு | நிலைகள், நிலை குறியீடுகள், வகைகள் | உள்ளமைவுகள், பாத்திர வரையறைகள், அம்ச கொடிகள் | மாறாத மதிப்புகளின் வரிசைப்படுத்தப்பட்ட பட்டியல்கள் | செயல்பாடு அளவுருக்கள், எளிய கட்டுப்படுத்தப்பட்ட மதிப்புகள் |
நடைமுறை உதாரணங்கள் மற்றும் சிறந்த நடைமுறைகள்
உதாரணம் 1: API நிலை குறியீடுகளைப் பிரதிநிதித்துவப்படுத்துதல்
எண்ணுரு:
enum ApiStatus {
Success = "SUCCESS",
Error = "ERROR",
Pending = "PENDING"
}
function handleApiResponse(status: ApiStatus) {
// ... logic ...
}
கான்ஸ்ட் அசெர்ஷன் (பொருள்):
const apiStatusCodes = {
SUCCESS: "SUCCESS",
ERROR: "ERROR",
PENDING: "PENDING"
} as const;
type ApiStatus = typeof apiStatusCodes[keyof typeof apiStatusCodes];
function handleApiResponse(status: ApiStatus) {
// ... logic ...
}
யூனியன் வகை:
type ApiStatus = "SUCCESS" | "ERROR" | "PENDING";
function handleApiResponse(status: ApiStatus) {
// ... logic ...
}
பரிந்துரை: இந்த சூழ்நிலைக்கு, ஒரு யூனியன் வகை பெரும்பாலும் மிகவும் சுருக்கமான மற்றும் திறமையானதாகும். எழுத்து மதிப்புகளே போதுமான விளக்கமானவை. ஒவ்வொரு நிலைக்கும் கூடுதல் மெட்டாடேட்டாவை (எ.கா., பயனர்-நட்பு செய்தி) இணைக்க வேண்டியிருந்தால், ஒரு கான்ஸ்ட் அசெர்ஷன் பொருள் ஒரு சிறந்த தேர்வாக இருக்கும்.
உதாரணம் 2: பயனர் பாத்திரங்களை வரையறுத்தல்
எண்ணுரு:
enum UserRoleEnum {
Admin = "ADMIN",
Moderator = "MODERATOR",
User = "USER"
}
function getUserPermissions(role: UserRoleEnum) {
// ... logic ...
}
கான்ஸ்ட் அசெர்ஷன் (பொருள்):
const userRolesObject = {
Admin: "ADMIN",
Moderator: "MODERATOR",
User: "USER"
} as const;
type UserRole = typeof userRolesObject[keyof typeof userRolesObject];
function getUserPermissions(role: UserRole) {
// ... logic ...
}
யூனியன் வகை:
type UserRole = "ADMIN" | "MODERATOR" | "USER";
function getUserPermissions(role: UserRole) {
// ... logic ...
}
பரிந்துரை: ஒரு கான்ஸ்ட் அசெர்ஷன் பொருள் இங்கு ஒரு நல்ல சமநிலையை ஏற்படுத்துகிறது. இது தெளிவான விசை-மதிப்பு ஜோடிகளை (எ.கா., userRolesObject.Admin) வழங்குகிறது, இது பாத்திரங்களைக் குறிப்பிடும்போது வாசிப்புத்திறனை மேம்படுத்தும், அதே நேரத்தில் செயல்திறன் மிக்கதாகவும் இருக்கும். நேரடி சர எழுத்துக்கள் போதுமானதாக இருந்தால் யூனியன் வகையும் ஒரு மிக வலுவான போட்டியாளராகும்.
உதாரணம் 3: உள்ளமைவு விருப்பங்களைப் பிரதிநிதித்துவப்படுத்துதல்
உலகளாவிய பயன்பாட்டிற்கான உள்ளமைவு பொருளை கற்பனை செய்து பாருங்கள், இது வெவ்வேறு தீம்களைக் கொண்டிருக்கலாம்.
எண்ணுரு:
enum Theme {
Light = "light",
Dark = "dark",
System = "system"
}
interface AppConfig {
theme: Theme;
// ... other config options ...
}
கான்ஸ்ட் அசெர்ஷன் (பொருள்):
const themes = {
Light: "light",
Dark: "dark",
System: "system"
} as const;
type Theme = typeof themes[keyof typeof themes];
interface AppConfig {
theme: Theme;
// ... other config options ...
}
யூனியன் வகை:
type Theme = "light" | "dark" | "system";
interface AppConfig {
theme: Theme;
// ... other config options ...
}
பரிந்துரை: தீம்கள் போன்ற உள்ளமைவு அமைப்புகளுக்கு, கான்ஸ்ட் அசெர்ஷன் பொருள் பெரும்பாலும் சிறந்தது. இது கிடைக்கக்கூடிய விருப்பங்களையும் அவற்றின் தொடர்புடைய சர மதிப்புகளையும் தெளிவாக வரையறுக்கிறது. விசைகள் (Light, Dark, System) விளக்கமானவை மற்றும் மதிப்புகளுடன் நேரடியாகப் பொருந்துகின்றன, உள்ளமைவு குறியீட்டை மிகவும் புரிந்துகொள்ளக்கூடியதாக ஆக்குகிறது.
வேலைக்கான சரியான கருவியைத் தேர்ந்தெடுப்பது
டைப்ஸ்கிரிப்ட் எண்ணுருக்கள், கான்ஸ்ட் அசெர்ஷன்ஸ் மற்றும் யூனியன் வகைகளுக்கு இடையிலான முடிவு எப்போதும் கருப்பு வெள்ளை இல்லை. இது இயக்க நேர செயல்திறன், தொகுப்பு அளவு மற்றும் குறியீடு வாசிப்புத்திறன்/வெளிப்பாடு இடையே ஒரு வர்த்தக பரிமாற்றமாகும்.
- யூனியன் வகைகளைத் தேர்வுசெய்யவும், உங்களுக்கு ஒரு எளிய, கட்டுப்படுத்தப்பட்ட சர அல்லது எண் எழுத்துக்களின் தொகுப்பு தேவைப்படும்போது மற்றும் அதிகபட்ச சுருக்கம் விரும்பப்படுகிறது. அவை செயல்பாடு கையொப்பங்கள் மற்றும் அடிப்படை மதிப்பு கட்டுப்பாடுகளுக்கு சிறந்தவை.
- கான்ஸ்ட் அசெர்ஷன்ஸை (பொருள்களுடன்)த் தேர்வுசெய்யவும், நீங்கள் பெயரிடப்பட்ட மாறிலிகளை வரையறுக்க மிகவும் கட்டமைக்கப்பட்ட, வாசிக்கக்கூடிய வழியை விரும்பும்போது, கணிசமாகக் குறைவான இயக்க நேர கூடுதல் சுமையுடன், ஒரு எண்ணுருவைப் போலவே. இது உள்ளமைவு, பாத்திரங்கள் அல்லது விசைகள் குறிப்பிடத்தக்க அர்த்தத்தைச் சேர்க்கும் எந்தத் தொகுப்பிற்கும் சிறந்தது.
- கான்ஸ்ட் அசெர்ஷன்ஸை (வரிசைகளுடன்)த் தேர்வுசெய்யவும், உங்களுக்கு மாறாத வரிசைப்படுத்தப்பட்ட மதிப்புகளின் வரிசை மட்டுமே தேவைப்படும்போது, பெயரிடப்பட்ட விசைகளை விட குறியீடு மூலம் நேரடி அணுகல் முக்கியமானது.
- டைப்ஸ்கிரிப்ட் எண்ணுருக்களைக் கவனியுங்கள், உங்களுக்கு அவற்றின் குறிப்பிட்ட அம்சங்கள் தேவைப்படும்போது, தலைகீழ் மேப்பிங் (நவீன வளர்ச்சியில் குறைவாகவே காணப்படுகிறது) அல்லது உங்கள் குழுவிற்கு வலுவான விருப்பம் இருந்தால் மற்றும் செயல்திறன் தாக்கம் உங்கள் திட்டத்திற்கு புறக்கணிக்கத்தக்கதாக இருந்தால்.
பல நவீன டைப்ஸ்கிரிப்ட் திட்டங்களில், குறிப்பாக சர அடிப்படையிலான மாறிலிகளுக்கு, அவற்றின் சிறந்த செயல்திறன் பண்புகள் மற்றும் பெரும்பாலும் எளிமையான ஜாவாஸ்கிரிப்ட் வெளியீடு காரணமாக, பாரம்பரிய எண்ணுருக்களை விட கான்ஸ்ட் அசெர்ஷன்ஸ் மற்றும் யூனியன் வகைகளை நோக்கி ஒரு சாய்வு இருக்கும்.
உலகளாவிய பரிசீலனைகள்
உலகளாவிய பார்வையாளர்களுக்கான பயன்பாடுகளை உருவாக்கும்போது, நிலையான மற்றும் கணிக்கக்கூடிய மாறிலி வரையறைகள் மிக முக்கியம். நாம் விவாதித்த தேர்வுகள் (எண்ணுருக்கள், கான்ஸ்ட் அசெர்ஷன்ஸ், யூனியன் வகைகள்) வெவ்வேறு சூழல்களிலும் டெவலப்பர் இடங்களிலும் வகை பாதுகாப்பை செயல்படுத்துவதன் மூலம் இந்த நிலைத்தன்மைக்கு பங்களிக்கின்றன.
- நிலைத்தன்மை: தேர்ந்தெடுக்கப்பட்ட முறை எதுவாக இருந்தாலும், உங்கள் திட்டத்திற்குள் முக்கியமானது நிலைத்தன்மை. பாத்திரங்களுக்காக கான்ஸ்ட் அசெர்ஷன் பொருள்களைப் பயன்படுத்த நீங்கள் முடிவு செய்தால், குறியீடு தளம் முழுவதும் அந்த வடிவத்தைப் பின்பற்றவும்.
- சர்வதேசமயமாக்கல் (i18n): மொழிபெயர்க்கப்படும் லேபிள்கள் அல்லது செய்திகளை வரையறுக்கும்போது, இந்த வகை-பாதுகாப்பான கட்டமைப்புகளைப் பயன்படுத்தி, செல்லுபடியாகும் விசைகள் அல்லது அடையாளங்காட்டிகள் மட்டுமே பயன்படுத்தப்படுவதை உறுதிசெய்யவும். உண்மையான மொழிபெயர்க்கப்பட்ட சரங்கள் i18n நூலகங்கள் மூலம் தனித்தனியாக நிர்வகிக்கப்படும். உதாரணமாக, `status` புலம் "PENDING", "PROCESSING", "COMPLETED" ஆக இருக்கலாம் என்றால், உங்கள் i18n நூலகம் இந்த உள் அடையாளங்காட்டிகளை உள்ளூர் காட்சி உரையுடன் இணைக்கும்.
- நேர மண்டலங்கள் & நாணயங்கள்: எண்ணுருக்களுடன் நேரடியாகத் தொடர்பில்லாதபோது, தேதிகள், நேரங்கள் அல்லது நாணயங்கள் போன்ற மதிப்புகளுடன் கையாளும் போது, டைப்ஸ்கிரிப்ட்டின் வகை அமைப்பு சரியான பயன்பாட்டை செயல்படுத்துவதை உறுதிசெய்ய உதவும், ஆனால் துல்லியமான உலகளாவிய கையாளுதலுக்கு பெரும்பாலும் வெளிப்புற நூலகங்கள் தேவைப்படுகின்றன. உதாரணமாக, ஒரு `Currency` யூனியன் வகையை `"USD" | "EUR" | "GBP"` என வரையறுக்கலாம், ஆனால் உண்மையான மாற்று தர்க்கத்திற்கு சிறப்பு கருவிகள் தேவை.
முடிவுரை
டைப்ஸ்கிரிப்ட் மாறிலிகளை நிர்வகிக்க ஒரு வளமான கருவித்தொகுப்பை வழங்குகிறது. எண்ணுருக்கள் நமக்கு நன்றாக சேவை செய்தாலும், கான்ஸ்ட் அசெர்ஷன்ஸ் மற்றும் யூனியன் வகைகள் கவர்ச்சிகரமான, பெரும்பாலும் அதிக செயல்திறன் கொண்ட, மாற்றுகளை வழங்குகின்றன. அவற்றின் வேறுபாடுகளைப் புரிந்துகொண்டு, உங்கள் குறிப்பிட்ட தேவைகளின் அடிப்படையில் சரியான அணுகுமுறையைத் தேர்ந்தெடுப்பதன் மூலம் - அது செயல்திறன், வாசிப்புத்திறன் அல்லது சுருக்கமானதாக இருந்தாலும் - நீங்கள் மிகவும் வலுவான, பராமரிக்கக்கூடிய மற்றும் திறமையான டைப்ஸ்கிரிப்ட் குறியீட்டை எழுதலாம், இது உலகளவில் அளவிடப்படுகிறது.
இந்த மாற்றுகளை ஏற்றுக்கொள்வது சிறிய தொகுப்பு அளவுகள், வேகமான பயன்பாடுகள் மற்றும் உங்கள் சர்வதேச குழுவிற்கு மிகவும் கணிக்கக்கூடிய டெவலப்பர் அனுபவத்திற்கு வழிவகுக்கும்.