தனிப்பயன் ஜாவாஸ்கிரிப்ட் எனில் உள்ள தன்னியக்க சவால்களைத் தீர்ப்பது
ஜாவாஸ்கிரிப்டில் உள்ள Enumகள் மதிப்புகளை படிக்கக்கூடிய பெயர்களுக்கு மேப்பிங் செய்வதற்கான ஒரு பயனுள்ள கருவியாகும், குறிப்பாக மீண்டும் மீண்டும் தரவுகளுடன் பணிபுரியும் போது. இருப்பினும், வெண்ணிலா ஜாவாஸ்கிரிப்டில் தனிப்பயன் enum செயலாக்கங்களுக்கான முழு தன்னியக்க ஆதரவை அடைவது தந்திரமானதாக இருக்கலாம், குறிப்பாக ஆப்ஜெக்ட்கள் மற்றும் சரம் வரிசைகள் போன்ற பல வகையான உள்ளீடுகளைக் கையாளும் போது.
டெவலப்பர்கள் எதிர்கொள்ளும் முக்கிய சவால்களில் ஒன்று, enumகள் சரியான மதிப்பைத் தருவது மட்டுமல்லாமல், வளர்ச்சியின் போது அர்த்தமுள்ள தன்னியக்கப் பரிந்துரைகளையும் வழங்குவதை உறுதி செய்வதாகும். பொருள் அடிப்படையிலான மற்றும் சரம் சார்ந்த enumகளுக்கு இடையில் மாறும்போது இது குறிப்பாக கவனிக்கப்படுகிறது.
இந்தக் கட்டுரையில், பொருள்கள் மற்றும் சரம் உள்ளீடுகள் இரண்டிலும் தடையின்றி செயல்படும் வெனிலா ஜாவாஸ்கிரிப்ட்டில் தனிப்பயன் enum ஐ எவ்வாறு செயல்படுத்துவது என்பதை ஆராய்வோம். கூடுதலாக, உள்ளீட்டு வகையைப் பொருட்படுத்தாமல், தன்னியக்க ஆதரவு வலுவாக இருப்பதை உறுதிசெய்ய, enum செயல்படுத்தலை எவ்வாறு மேம்படுத்துவது என்பதை நாங்கள் ஆராய்வோம்.
எடுத்துக்காட்டுகள் மற்றும் விளக்கங்கள் மூலம், ஜாவாஸ்கிரிப்ட் enumகளின் நுணுக்கங்களுக்குள் மூழ்கி, சரம் அடிப்படையிலான enumகளில் தானாக நிரப்புதல் இல்லாதது போன்ற பொதுவான பிரச்சனைகளுக்கு நடைமுறை தீர்வுகளை வழங்குவோம். இந்த வழிகாட்டி மிகவும் திறமையான மற்றும் டெவலப்பர்களுக்கு ஏற்ற enum செயல்படுத்தலை அடைய உதவும்.
கட்டளை | பயன்பாட்டின் உதாரணம் |
---|---|
Object.freeze() | இந்த முறை பொருளின் மீதான பண்புகளை மாற்றியமைப்பதைத் தடுக்கிறது, திறம்பட enum மாறாமல் செய்கிறது. enum இன் சூழலில், உருவாக்கப்பட்ட பிறகு enum மதிப்புகளை தற்செயலாக மாற்ற முடியாது என்பதை இது உறுதி செய்கிறது. |
Object.fromEntries() | முக்கிய மதிப்பு ஜோடிகளின் பட்டியலை ஒரு பொருளாக மாற்ற பயன்படுகிறது. enum செயல்பாட்டிற்கு அனுப்பப்பட்ட வரிசை அல்லது பொருளை ஒரு உறைந்த enum அமைப்பாக மாற்றுவதற்கு இது மிகவும் அவசியமானது, அங்கு விசைகள் மற்றும் மதிப்புகள் எளிதில் ஒன்றுக்கொன்று மாறக்கூடியவை. |
flatMap() | ஒரு பொருளை இருதரப்பு விசை-மதிப்பு ஜோடிகளாக மாற்றும்போது இந்த முறை முக்கியமானது. இது பொருளின் மேல் மேப்பிங்கின் முடிவைத் தட்டையாக்குகிறது, இது முன்னோக்கி (மதிப்புக்கு விசை) மற்றும் தலைகீழ் (மதிப்பிலிருந்து விசை) ஆகிய இரண்டையும் enum இல் அனுமதிக்கிறது. |
Symbol() | ஒரு சின்னம் என்பது ஒரு அடையாளங்காட்டியாகப் பயன்படுத்தக்கூடிய தனித்துவமான மற்றும் மாறாத மதிப்பு. enum செயல்படுத்தலில், இது சரம் அடிப்படையிலான enumகளுக்கு தனித்துவமான, மோதாமல் மதிப்புகளை உருவாக்க உதவுகிறது, ஒவ்வொரு enum உருப்படியும் தனித்தன்மை வாய்ந்ததாக இருப்பதை உறுதி செய்கிறது. |
assert() | யூனிட் சோதனையில் பயன்படுத்தப்பட்டது, கொடுக்கப்பட்ட நிபந்தனை உண்மையா என்பதை console.assert() சரிபார்க்கிறது. நிபந்தனை தவறாக இருந்தால், அது ஒரு பிழையை பதிவு செய்கிறது. சோதனையின் போது enum செயல்பாடுகளின் நடத்தையை சரிபார்க்க இது அவசியம். |
as const | மதிப்புகள் மாறாதவையாகக் கருதப்படுவதை உறுதிசெய்யும் ஒரு டைப்ஸ்கிரிப்ட் அம்சம். சரம்-அடிப்படையிலான அணிவரிசைகளைக் கையாளும் போது இது முக்கியமானது, அவற்றின் வகைகள் சரியாக ஊகிக்கப்படுவதையும், எதிர்பார்த்தபடி தானாக முடிக்கப்படுவதையும் உறுதிசெய்கிறது. |
Object.entries() | ஒரு பொருளிலிருந்து விசை-மதிப்பு ஜோடிகளை அணிவரிசையாக மீட்டெடுக்கப் பயன்படுகிறது. பொருள் அடிப்படையிலான enum இன் விசைகள் மற்றும் மதிப்புகள் இரண்டையும் மேப்பிங் செய்வதற்கு இது அவசியம், இது தன்னியக்க ஆதரவுக்காக மாற்றியமைக்கப்படும். |
TypeScript's keyof | ஒரு பொருளின் விசைகளை யூனியன் வகையாக பிரித்தெடுக்க இந்த டைப்ஸ்கிரிப்ட் முக்கிய சொல் பயன்படுத்தப்படுகிறது. enum இன் வகை வரையறையில், இது தன்னியக்க ஆதரவுக்காக நிரல் ரீதியாக விசைகளை அணுக அனுமதிக்கிறது. |
ஜாவாஸ்கிரிப்ட் எனம் செயல்படுத்தல் மற்றும் தன்னியக்க சவால்களைப் புரிந்துகொள்வது
எடுத்துக்காட்டில் உருவாக்கப்பட்ட தனிப்பயன் enum செயல்படுத்தல் வெண்ணிலா ஜாவாஸ்கிரிப்டில் உள்ள ஒரு பொதுவான சிக்கலைக் குறிக்கிறது: முழுமை இல்லாதது தானாக நிறைவு enumகளுக்கான ஆதரவு, குறிப்பாக பல உள்ளீடுகளைக் கையாளும் போது. `_enum` செயல்பாடு பொருள் சார்ந்த enumகள் மற்றும் சரம் சார்ந்த enumகள் இரண்டிலும் வேலை செய்ய வடிவமைக்கப்பட்டுள்ளது. சரம்-அடிப்படையிலான enums இல் உள்ள சிக்கல் என்னவென்றால், ஜாவாஸ்கிரிப்ட்டில் சொந்த "கான்ஸ்ட்" அம்சம் இல்லை, இது சரங்களின் வரிசை மாறாததாகக் கருதப்படுவதை உறுதி செய்கிறது. இந்த மாறாத தன்மை மிகவும் முக்கியமானது டைப்ஸ்கிரிப்ட் வகை அனுமானம் மற்றும் வளர்ச்சி சூழல்களில் ஜாவாஸ்கிரிப்ட்டின் தன்னியக்க நடத்தை.
முதல் ஸ்கிரிப்ட்டின் அணுகுமுறை `Object.freeze()` ஐப் பயன்படுத்தி, enum உருவாக்கப்பட்டவுடன், அதன் மதிப்புகளை மாற்ற முடியாது, இதனால் மாறாத தன்மையைப் பராமரிக்கிறது. enum மதிப்புகள் மாறாமல் இருக்க வேண்டிய சூழ்நிலைகளில் இது மிகவும் பயனுள்ளதாக இருக்கும் மற்றும் மாற்றப்படக்கூடாது. கூடுதலாக, `Object.fromEntries()` ஆனது முக்கிய மதிப்பு ஜோடிகளின் வரிசையை ஒரு பொருளாக மாற்றுகிறது. இது அவசியமானது, ஏனெனில் தன்னியக்கம் சீராகச் செயல்பட முன்னோக்கி மேப்பிங் (மதிப்புக்கு விசை) மற்றும் தலைகீழ் மேப்பிங் (மதிப்பிலிருந்து விசை) ஆகிய இரண்டையும் enum ஆதரிக்க வேண்டும். இந்த முறைகள் இல்லாமல், enum பிழைகளுக்கு அதிக வாய்ப்புள்ளது மற்றும் ஒரு மாறும் முன்-இறுதி சூழலில் பிழைத்திருத்தம் கடினமாக இருக்கும்.
செயல்படுத்தலின் இரண்டாம் பகுதி, உள்ளீடுகளாக பொருள்கள் மற்றும் அணிவரிசைகள் இரண்டையும் ஆதரிப்பதில் கவனம் செலுத்துகிறது. ஆப்ஜெக்ட்-அடிப்படையிலான enumகளுக்கு, பொருளிலிருந்து முக்கிய மதிப்பு ஜோடிகளைப் பிரித்தெடுக்க, செயல்பாடு `Object.entries()` ஐப் பயன்படுத்துகிறது. enum ஆனது மதிப்புகள் மற்றும் அதற்கு நேர்மாறாக இரண்டு விசைகளையும் சரியாக வரைபடமாக்குகிறது என்பதை இது உறுதி செய்கிறது. சரம்-அடிப்படையிலான enumகளுக்கு, இருதரப்பு மேப்பிங்கை உருவாக்க குறியீடு `பிளாட்மேப்()` ஐப் பயன்படுத்துகிறது. இது சரங்களை ஒரு குறியீடாக வரைபடமாக்க அனுமதிக்கிறது, ஒவ்வொரு சரத்திற்கும் தனித்துவமான, மோதாமல் மதிப்பு இருப்பதை உறுதி செய்கிறது. `சிம்பல்()` இன் பயன்பாடு, பயன்பாட்டில் உள்ள மற்ற மதிப்புகளுடன் ஒன்றுடன் ஒன்று சேர்வதில்லை என்று உத்தரவாதம் அளிக்கப்படும் தனித்துவமான மதிப்புகளை உருவாக்குவதில் குறிப்பாக பயனுள்ளதாக இருக்கும், இது enum ஒருமைப்பாட்டை உறுதி செய்வதற்கு முக்கியமானது.
ஸ்கிரிப்ட்டின் மற்றொரு முக்கிய அம்சம் அதன் மாடுலாரிட்டி. செயல்பாட்டின் ஒவ்வொரு பகுதியும், `enumItem()` முதல் முக்கிய `_enum` செயல்பாடு வரை, வெவ்வேறு சூழல்களில் மீண்டும் பயன்படுத்தக்கூடிய வகையில் எழுதப்பட்டுள்ளது. உள்ளீடு ஒரு பொருளாக இருந்தாலும் அல்லது சரங்களின் வரிசையாக இருந்தாலும், ஒரே enum செயல்படுத்தலை வெவ்வேறு திட்டங்களுக்குப் பயன்படுத்த முடியும் என்பதை இது உறுதி செய்கிறது. மேலும், உடன் வரும் TypeScript வகை `Enum இந்த அணுகுமுறை பொருள் சார்ந்த மற்றும் சரம் சார்ந்த உள்ளீடுகளுக்கு ஆதரவைச் சேர்ப்பதன் மூலம் enum தன்னியக்க சிக்கலைத் தீர்க்க வெண்ணிலா ஜாவாஸ்கிரிப்டைப் பயன்படுத்துகிறது. enum செயல்படுத்தல் மட்டு மற்றும் மீண்டும் பயன்படுத்தக்கூடியது என்பதை இது உறுதி செய்கிறது. இந்த அணுகுமுறை டைப்ஸ்கிரிப்டை பலமான வகை வரையறைகளை வழங்கவும், ஆப்ஜெக்ட் மற்றும் ஸ்ட்ரிங் அடிப்படையிலான enumகள் இரண்டிலும் தன்னியக்கத்தை மேம்படுத்தவும் உதவுகிறது. டைப்ஸ்கிரிப்ட்டின் "ஆஸ் கான்ஸ்ட்" அம்சம் மாறாத தன்மை மற்றும் சிறந்த வகை அனுமானத்தை உறுதி செய்கிறது. இந்தத் தீர்வு, பல்வேறு சூழல்களில் செயல்பாட்டைச் சரிபார்க்க யூனிட் சோதனைகளுடன் சேர்ந்து, enums இன் வெண்ணிலா ஜாவாஸ்கிரிப்ட் செயலாக்கத்தில் கவனம் செலுத்துகிறது. சிறந்த தன்னியக்க ஆதரவுக்கான ஜாவாஸ்கிரிப்ட் எனம் அமலாக்கத்தை மேம்படுத்துகிறது
// Approach 1: Object and String-Based Enum with Autocomplete Support
// Modular function for creating an enum with autocomplete support
export function _enum(...arr) {
return Object.freeze(Object.fromEntries(
arr.length === 1 && typeof arr[0] === 'object'
? Object.entries(arr[0]).flatMap(([a, b]) => [
[a, b],
[b, a],
])
: arr
.map(a => [a, enumItem()])
.flatMap(([a, b]) => [
[a, b],
[b, a],
])
));
}
// Helper function for creating enum items
function enumItem() {
return Symbol();
}
// Usage Example 1: Object-based enum
const a = _enum({ foo: 0, bar: 1, baz: 2 });
console.log(a.foo); // 0
console.log(a[1]); // 'bar'
// Usage Example 2: String-based enum
const b = _enum('foo', 'bar', 'baz');
console.log(b.foo); // Symbol()
console.log(b['baz']); // Symbol()
வகை பாதுகாப்பு மற்றும் தன்னியக்க ஆதரவுக்கான டைப்ஸ்கிரிப்ட் மூலம் Enum செயல்படுத்தல்
// Approach 2: TypeScript Enum with Type Safety
type Enum<T> = T extends readonly string[]
? { [K in T[number]]: number }
: { [K in keyof T]: number };
// Function to create enums with TypeScript
export function _enum<T>(...arr: T[]): Enum<T> {
return Object.freeze(Object.fromEntries(
arr.length === 1 && typeof arr[0] === 'object'
? Object.entries(arr[0] as object).flatMap(([a, b]) => [
[a, b],
[b, a],
])
: arr.map((a) => [a, Symbol()]).flatMap(([a, b]) => [
[a, b],
[b, a],
])
));
}
// Testing the Enum with an array (as const)
const testArray = ["foo", "bar", "baz"] as const;
type A = Enum<typeof testArray>;
// Testing with an object
const testObj = { foo: 0, bar: 1, baz: 2 };
type B = Enum<typeof testObj>;
அலகு சோதனைகளுடன் வெண்ணிலா ஜாவாஸ்கிரிப்ட் எனம் செயல்படுத்தல்
// Approach 3: JavaScript Enum with Unit Testing
export function _enum(...arr) {
return Object.freeze(Object.fromEntries(
arr.length === 1 && typeof arr[0] === 'object'
? Object.entries(arr[0]).flatMap(([a, b]) => [
[a, b],
[b, a],
])
: arr.map(a => [a, Symbol()]).flatMap(([a, b]) => [
[a, b],
[b, a],
])
));
}
// Unit tests for the enum function
function testEnum() {
const objEnum = _enum({ foo: 0, bar: 1, baz: 2 });
console.assert(objEnum.foo === 0, 'Test Failed: objEnum.foo !== 0');
console.assert(objEnum[1] === 'bar', 'Test Failed: objEnum[1] !== bar');
const strEnum = _enum('foo', 'bar', 'baz');
console.assert(typeof strEnum.foo === 'symbol', 'Test Failed: strEnum.foo is not Symbol');
}
// Run unit tests
testEnum();
ஜாவாஸ்கிரிப்ட் எனம் செயலாக்கங்களில் தன்னியக்கத்தை மேம்படுத்துதல்
மேம்படுத்த மிகவும் பயனுள்ள வழிகளில் ஒன்று தானாக நிறைவு JavaScript enums இல் ஆதரவு என்பது வகை அனுமானத்தை செயல்படுத்தும் வகையில் enumகள் வரையறுக்கப்படுவதை உறுதி செய்வதாகும். enums பொதுவாக மதிப்புகளை பெயர்களுக்கு வரைபடமாக்கும் போது, அவை நவீன மேம்பாட்டுக் கருவிகளுடன் சிறந்த ஒருங்கிணைப்பை அனுமதிக்கும் வகையில் கட்டமைக்கப்பட வேண்டும். துல்லியமான தட்டச்சு மூலம் enums வரையறுக்கப்படும் போது, குறிப்பாக in டைப்ஸ்கிரிப்ட், VSCode போன்ற எடிட்டர்கள் டெவலப்பர்களுக்கு மிகவும் அர்த்தமுள்ள பரிந்துரைகளை வழங்க முடியும்.
enum கையாளுதலின் ஒரு அம்சம் பெரும்பாலும் கவனிக்கப்படாமல் போகும், மாறாத தன்மை. ஜாவாஸ்கிரிப்ட்டில், பிழைகளைத் தவிர்ப்பதற்கு, குறிப்பாக பெரிய அளவிலான திட்டங்களில், enumகள் மாறாதவை என்பதை உறுதிப்படுத்துவது அவசியம். `Object.freeze()` ஐ மேம்படுத்துவதன் மூலம், ஒரு enum உருவாக்கப்பட்டவுடன், அதை மாற்ற முடியாது என்பதை உறுதிசெய்யலாம். விசைகள் மற்றும் மதிப்புகளுக்கு இடையேயான மேப்பிங்குகள் பயன்பாட்டு ஆயுட்காலம் முழுவதும் மாறாமல் இருக்கும், இது கோட்பேஸின் முன்கணிப்பு மற்றும் நம்பகத்தன்மையை மேம்படுத்துகிறது.
மேலும், enum பயன்பாட்டினை மேம்படுத்துவதில் இருதரப்பு மேப்பிங்கின் பங்கைக் குறிப்பிடுவது முக்கியம். இருதரப்பு மேப்பிங், `Object.entries()` மற்றும் `flatMap()` ஆகியவற்றைப் பயன்படுத்தி செயல்படுத்தப்படுகிறது, டெவலப்பர்கள் தங்கள் பெயர்கள் மற்றும் அவற்றின் மதிப்புகள் இரண்டிலும் enumகளை அணுக அனுமதிக்கிறது. இந்த நெகிழ்வுத்தன்மை தேடல் செயல்முறையை எளிதாக்குகிறது மற்றும் டெவலப்பர்கள் சிக்கலான தரவுத்தொகுப்புகளுடன் வேலை செய்வதை எளிதாக்குகிறது. வலுவான தன்னியக்க ஆதரவுடன் இணைந்து, இது பிழைகளின் வாய்ப்பைக் குறைப்பதன் மூலமும், enum மதிப்புகளுக்கு விரைவான, அதிக உள்ளுணர்வு அணுகலை வழங்குவதன் மூலமும் டெவலப்பர் உற்பத்தித்திறனைக் கடுமையாக மேம்படுத்தலாம்.
JavaScript Enums மற்றும் தானியங்குநிரப்புதல் பற்றிய பொதுவான கேள்விகள்
- ஜாவாஸ்கிரிப்டில் உள்ள எண்கள் மாறாதவை என்பதை நான் எப்படி உறுதிப்படுத்துவது?
- நீங்கள் பயன்படுத்தலாம் Object.freeze() உங்கள் எண்கள் வரையறுக்கப்பட்டவுடன் அவை மாறாதவை என்பதை உறுதிப்படுத்தும் முறை.
- enums இல் இருதரப்பு மேப்பிங் என்றால் என்ன?
- இருதரப்பு மேப்பிங் enumகளை அவற்றின் விசைகள் மற்றும் அவற்றின் மதிப்புகள் மூலம் அணுக அனுமதிக்கிறது. இது பெரும்பாலும் பயன்படுத்தி அடையப்படுகிறது Object.entries() மற்றும் flatMap() பொருட்களை முக்கிய மதிப்பு ஜோடிகளாக மாற்ற.
- சரம்-அடிப்படையிலான enumகளுக்கு தானியங்குநிரப்புதல் ஏன் வேலை செய்யாது?
- ஜாவாஸ்கிரிப்ட்டில், சரம்-அடிப்படையிலான enumகள் வரையறுக்கப்படாவிட்டால், தானியங்குநிரப்புதல் வேலை செய்யாது. as const டைப்ஸ்கிரிப்டில், அவற்றின் வகைகள் மாறிலிகளாகக் கருதப்படுவதை உறுதி செய்கிறது.
- பயன்படுத்துவதால் என்ன நன்மை Symbol() enum மதிப்புகளுக்கு?
- சின்னங்கள் ஒவ்வொரு enum மதிப்பு தனித்தன்மை வாய்ந்ததாக இருப்பதை உறுதிசெய்கிறது, பெரிய குறியீட்டுத் தளங்களில் உள்ள enum மதிப்புகளுக்கு இடையே தற்செயலான மோதல்களைத் தடுக்கிறது.
- ஜாவாஸ்கிரிப்ட் என்ம்களில் டைப்ஸ்கிரிப்ட் வகை பாதுகாப்பை எவ்வாறு சேர்ப்பது?
- போன்ற தனிப்பயன் வகையைப் பயன்படுத்துவதன் மூலம் Enum<T>, நீங்கள் ஜாவாஸ்கிரிப்ட் enums இல் வகை பாதுகாப்பு மற்றும் தன்னியக்க ஆதரவை மேம்படுத்தலாம்.
ஜாவாஸ்கிரிப்ட் எனம் தன்னியக்கத்தின் இறுதி எண்ணங்கள்
JavaScript enums இல் முழு தன்னியக்க ஆதரவை அடைவதற்கு வகைகள் மற்றும் மாறாத தன்மையை கவனமாக கையாள வேண்டும். நாங்கள் விவாதித்த நுட்பங்கள், பயன்படுத்துதல் போன்றவை Object.freeze() மற்றும் இருதரப்பு மேப்பிங், பொருள் அடிப்படையிலான மற்றும் சரம் அடிப்படையிலான enumகள் இரண்டையும் கையாளும் போது பொதுவான சவால்களை எதிர்கொள்ளவும்.
டைப்ஸ்கிரிப்ட்டின் "கான்ஸ்டாக" செயல்படுத்துவதன் மூலமும், மாறாத தன்மைக்கான enumகளை மேம்படுத்துவதன் மூலமும், தானாக நிரப்புவது மட்டுமல்லாமல் குறியீட்டின் ஒட்டுமொத்த நம்பகத்தன்மையையும் மேம்படுத்துகிறோம். இந்த நடைமுறைகள் டெவலப்பர்களை மிகவும் திறமையான மற்றும் பிழை இல்லாத பயன்பாடுகளை உருவாக்க அனுமதிக்கின்றன, சிறிய மற்றும் பெரிய திட்டங்களில் enums செயல்படுவதை உறுதி செய்கிறது.
குறிப்புகள் மற்றும் ஆதாரங்கள்
- உள்ளடக்கம் மற்றும் குறியீடு எடுத்துக்காட்டுகள் GitHub களஞ்சியங்களில் காணப்படும் நிஜ-உலக JavaScript சவால்களை அடிப்படையாகக் கொண்டவை. enums இல் தானியங்குநிரப்புதல் தொடர்பான குறிப்பிட்ட பிரச்சினை இதில் விவாதிக்கப்படுகிறது GitHub ஆதாரம் .
- ஜாவாஸ்கிரிப்ட் பற்றிய கூடுதல் நுண்ணறிவு Object.freeze() மற்றும் டைப்ஸ்கிரிப்ட்டின் "ஆஸ் கான்ஸ்ட்" என்பது அதிகாரப்பூர்வ ஆவணங்கள் மற்றும் டெவலப்பர் மன்றங்களில் இருந்து குறிப்பிடப்பட்டது. MDN வெப் டாக்ஸ் .
- டைப்ஸ்கிரிப்டைப் பயன்படுத்தி தானியங்குநிரப்புதல் மற்றும் வகை அனுமானத்தை மேம்படுத்துவது பற்றிய விவரங்கள் டைப்ஸ்கிரிப்ட் கையேட்டில் இருந்து தழுவி, அணுகலாம் டைப்ஸ்கிரிப்ட் ஆவணப்படுத்தல் .