தமிழ்

டைப்ஸ்கிரிப்ட் கான்ஸ்ட் அசெர்ஷன்களின் சக்தியைப் பயன்படுத்தி, மாற்ற முடியாத டைப் இன்ஃபரன்ஸ் மூலம் உங்கள் திட்டங்களில் குறியீட்டின் பாதுகாப்பையும் நம்பகத்தன்மையையும் அதிகரிக்கவும். நடைமுறை எடுத்துக்காட்டுகளுடன் அவற்றை எவ்வாறு திறம்பட பயன்படுத்துவது என்பதை அறிக.

டைப்ஸ்கிரிப்ட் கான்ஸ்ட் அசெர்ஷன்கள்: வலுவான குறியீட்டிற்கான மாற்ற முடியாத டைப் இன்ஃபரன்ஸ்

ஜாவாஸ்கிரிப்ட்டின் ஒரு சூப்பர்செட்டான டைப்ஸ்கிரிப்ட், வலை மேம்பாட்டின் ஆற்றல்மிக்க உலகிற்கு ஸ்டேடிக் டைப்பிங்கைக் கொண்டுவருகிறது. இதன் சக்திவாய்ந்த அம்சங்களில் ஒன்று டைப் இன்ஃபரன்ஸ் ஆகும், இதில் கம்பைலர் ஒரு மாறியின் வகையைத் தானாகவே கண்டறிகிறது. டைப்ஸ்கிரிப்ட் 3.4 இல் அறிமுகப்படுத்தப்பட்ட கான்ஸ்ட் அசெர்ஷன்கள், டைப் இன்ஃபரன்ஸை ஒரு படி மேலே கொண்டு சென்று, மாற்ற முடியாத தன்மையை (immutability) அமல்படுத்தவும், மேலும் வலுவான மற்றும் கணிக்கக்கூடிய குறியீட்டை உருவாக்கவும் உதவுகின்றன.

கான்ஸ்ட் அசெர்ஷன்கள் என்றால் என்ன?

கான்ஸ்ட் அசெர்ஷன்கள் என்பது ஒரு மதிப்பு மாற்ற முடியாதது என்று டைப்ஸ்கிரிப்ட் கம்பைலரிடம் தெரிவிக்கும் ஒரு வழியாகும். அவை ஒரு லிட்டரல் மதிப்பு அல்லது வெளிப்பாட்டிற்குப் பிறகு as const தொடரியலைப் பயன்படுத்திப் பயன்படுத்தப்படுகின்றன. இது அந்த வெளிப்பாட்டிற்கான மிகக் குறுகிய (லிட்டரல்) வகையை ஊகிக்கவும், அனைத்துப் பண்புகளையும் readonly எனக் குறிக்கவும் கம்பைலருக்கு அறிவுறுத்துகிறது.

சுருக்கமாகச் சொன்னால், கான்ஸ்ட் அசெர்ஷன்கள் ஒரு மாறியை const மூலம் அறிவிப்பதை விட வலுவான டைப் பாதுகாப்பை வழங்குகின்றன. const என்பது மாறிக்கு மீண்டும் மதிப்பு ஒதுக்குவதைத் தடுத்தாலும், அந்த மாறி குறிப்பிடும் பொருள் அல்லது அணிவரிசையை மாற்றுவதைத் தடுக்காது. கான்ஸ்ட் அசெர்ஷன்கள் பொருளின் பண்புகளை மாற்றுவதையும் தடுக்கின்றன.

கான்ஸ்ட் அசெர்ஷன்களைப் பயன்படுத்துவதன் நன்மைகள்

நடைமுறை எடுத்துக்காட்டுகள்

எடுத்துக்காட்டு 1: ஒரு லிட்டரலுடன் அடிப்படைப் பயன்பாடு

கான்ஸ்ட் அசெர்ஷன் இல்லாமல், டைப்ஸ்கிரிப்ட் message இன் வகையை string என ஊகிக்கிறது:


const message = "Hello, World!"; // Type: string

கான்ஸ்ட் அசெர்ஷனுடன், டைப்ஸ்கிரிப்ட் அதன் வகையை லிட்டரல் ஸ்டிரிங்கான "Hello, World!" என ஊகிக்கிறது:


const message = "Hello, World!" as const; // Type: "Hello, World!"

இது மிகவும் துல்லியமான டைப் வரையறைகள் மற்றும் ஒப்பீடுகளில் லிட்டரல் ஸ்டிரிங் வகையைப் பயன்படுத்த உங்களை அனுமதிக்கிறது.

எடுத்துக்காட்டு 2: அணிவரிசைகளுடன் கான்ஸ்ட் அசெர்ஷன்களைப் பயன்படுத்துதல்

வண்ணங்களின் அணிவரிசையைக் கவனியுங்கள்:


const colors = ["red", "green", "blue"]; // Type: string[]

அணிவரிசை const மூலம் அறிவிக்கப்பட்டிருந்தாலும், நீங்கள் அதன் உறுப்புகளை மாற்ற முடியும்:


colors[0] = "purple"; // No error
console.log(colors); // Output: ["purple", "green", "blue"]

கான்ஸ்ட் அசெர்ஷனைச் சேர்ப்பதன் மூலம், டைப்ஸ்கிரிப்ட் அணிவரிசையை ரீட்ஓன்லி ஸ்டிரிங்குகளின் ஒரு டூப்பிளாக (tuple) ஊகிக்கிறது:


const colors = ["red", "green", "blue"] as const; // Type: readonly ["red", "green", "blue"]

இப்போது, அணிவரிசையை மாற்ற முயற்சித்தால் டைப்ஸ்கிரிப்ட் பிழை ஏற்படும்:


// colors[0] = "purple"; // Error: Index signature in type 'readonly ["red", "green", "blue"]' only permits reading.

இது colors அணிவரிசை மாற்ற முடியாததாக இருப்பதை உறுதி செய்கிறது.

எடுத்துக்காட்டு 3: ஆப்ஜெக்டுகளுடன் கான்ஸ்ட் அசெர்ஷன்களைப் பயன்படுத்துதல்

அணிவரிசைகளைப் போலவே, ஆப்ஜெக்டுகளையும் கான்ஸ்ட் அசெர்ஷன்கள் மூலம் மாற்ற முடியாததாக மாற்றலாம்:


const person = {
  name: "Alice",
  age: 30,
}; // Type: { name: string; age: number; }

const உடன் கூட, நீங்கள் person ஆப்ஜெக்டின் பண்புகளை மாற்ற முடியும்:


person.age = 31; // No error
console.log(person); // Output: { name: "Alice", age: 31 }

கான்ஸ்ட் அசெர்ஷனைச் சேர்ப்பது ஆப்ஜெக்டின் பண்புகளை readonly ஆக்குகிறது:


const person = {
  name: "Alice",
  age: 30,
} as const; // Type: { readonly name: "Alice"; readonly age: 30; }

இப்போது, ஆப்ஜெக்டை மாற்ற முயற்சித்தால் டைப்ஸ்கிரிப்ட் பிழை ஏற்படும்:


// person.age = 31; // Error: Cannot assign to 'age' because it is a read-only property.

எடுத்துக்காட்டு 4: உள்ளமைக்கப்பட்ட ஆப்ஜெக்டுகள் மற்றும் அணிவரிசைகளுடன் கான்ஸ்ட் அசெர்ஷன்களைப் பயன்படுத்துதல்

உள்ளமைக்கப்பட்ட ஆப்ஜெக்டுகள் மற்றும் அணிவரிசைகளுக்கு கான்ஸ்ட் அசெர்ஷன்களைப் பயன்படுத்தி ஆழமாக மாற்ற முடியாத தரவுக் கட்டமைப்புகளை உருவாக்கலாம். பின்வரும் எடுத்துக்காட்டைக் கவனியுங்கள்:


const config = {
  apiUrl: "https://api.example.com",
  endpoints: {
    users: "/users",
    products: "/products",
  },
  supportedLanguages: ["en", "fr", "de"],
} as const;

// Type:
// {
//   readonly apiUrl: "https://api.example.com";
//   readonly endpoints: {
//     readonly users: "/users";
//     readonly products: "/products";
//   };
//   readonly supportedLanguages: readonly ["en", "fr", "de"];
// }

இந்த எடுத்துக்காட்டில், config ஆப்ஜெக்ட், அதன் உள்ளமைக்கப்பட்ட endpoints ஆப்ஜெக்ட், மற்றும் supportedLanguages அணிவரிசை அனைத்தும் readonly எனக் குறிக்கப்பட்டுள்ளன. இது உள்ளமைவின் எந்தப் பகுதியும் ரன்டைமில் தற்செயலாக மாற்றப்படாமல் இருப்பதை உறுதி செய்கிறது.

எடுத்துக்காட்டு 5: ஃபங்ஷன் ரிட்டர்ன் டைப்ஸ்களுடன் கான்ஸ்ட் அசெர்ஷன்கள்

ஒரு ஃபங்ஷன் மாற்ற முடியாத மதிப்பைத் திருப்பித் தருவதை உறுதிப்படுத்த கான்ஸ்ட் அசெர்ஷன்களைப் பயன்படுத்தலாம். இது உள்ளீட்டை மாற்றாத அல்லது மாற்றக்கூடிய வெளியீட்டை உருவாக்காத பயன்பாட்டு ஃபங்ஷன்களை உருவாக்கும்போது இது மிகவும் பயனுள்ளதாக இருக்கும்.


function createImmutableArray(items: T[]): readonly T[] {
  return [...items] as const;
}

const numbers = [1, 2, 3];
const immutableNumbers = createImmutableArray(numbers);

// Type of immutableNumbers: readonly [1, 2, 3]

// immutableNumbers[0] = 4; // Error: Index signature in type 'readonly [1, 2, 3]' only permits reading.

பயன்பாட்டு வழக்குகள் மற்றும் சூழ்நிலைகள்

உள்ளமைவு மேலாண்மை

பயன்பாட்டு உள்ளமைவை நிர்வகிக்க கான்ஸ்ட் அசெர்ஷன்கள் சிறந்தவை. உங்கள் உள்ளமைவு ஆப்ஜெக்டுகளை as const மூலம் அறிவிப்பதன் மூலம், பயன்பாட்டின் வாழ்க்கைச் சுழற்சி முழுவதும் உள்ளமைவு சீராக இருப்பதை உறுதிசெய்யலாம். இது எதிர்பாராத நடத்தைக்கு வழிவகுக்கும் தற்செயலான மாற்றங்களைத் தடுக்கிறது.


const appConfig = {
  appName: "My Application",
  version: "1.0.0",
  apiEndpoint: "https://api.example.com",
} as const;

மாறிலிகளை வரையறுத்தல்

குறிப்பிட்ட லிட்டரல் வகைகளுடன் மாறிலிகளை வரையறுக்கவும் கான்ஸ்ட் அசெர்ஷன்கள் பயனுள்ளதாக இருக்கும். இது டைப் பாதுகாப்பையும் குறியீட்டின் தெளிவையும் மேம்படுத்தும்.


const HTTP_STATUS_OK = 200 as const; // Type: 200
const HTTP_STATUS_NOT_FOUND = 404 as const; // Type: 404

ரெடக்ஸ் அல்லது பிற ஸ்டேட் மேனேஜ்மென்ட் லைப்ரரிகளுடன் பணியாற்றுதல்

ரெடக்ஸ் போன்ற ஸ்டேட் மேனேஜ்மென்ட் லைப்ரரிகளில், மாற்ற முடியாத தன்மை ஒரு முக்கிய கொள்கையாகும். உங்கள் ரிட்யூசர்கள் மற்றும் ஆக்ஷன் கிரியேட்டர்களில் மாற்ற முடியாத தன்மையை அமல்படுத்த கான்ஸ்ட் அசெர்ஷன்கள் உதவலாம், இது தற்செயலான ஸ்டேட் மாற்றங்களைத் தடுக்கிறது.


// Example Redux reducer

interface State {
  readonly count: number;
}

const initialState: State = { count: 0 } as const;

function reducer(state: State = initialState, action: { type: string }): State {
  switch (action.type) {
    default:
      return state;
  }
}

சர்வதேசமயமாக்கல் (i18n)

சர்வதேசமயமாக்கலில் பணிபுரியும்போது, நீங்கள் ஆதரிக்கப்படும் மொழிகளின் தொகுப்பையும் அதனுடன் தொடர்புடைய லோகேல் குறியீடுகளையும் கொண்டிருப்பீர்கள். கான்ஸ்ட் அசெர்ஷன்கள் இந்தத் தொகுப்பு மாற்ற முடியாததாக இருப்பதை உறுதிசெய்யும், உங்கள் i18n செயலாக்கத்தை உடைக்கக்கூடிய தற்செயலான சேர்த்தல்கள் அல்லது மாற்றங்களைத் தடுக்கும். எடுத்துக்காட்டாக, ஆங்கிலம் (en), பிரஞ்சு (fr), ஜெர்மன் (de), ஸ்பானிஷ் (es), மற்றும் ஜப்பானிய (ja) மொழிகளை ஆதரிப்பதாகக் கற்பனை செய்து கொள்ளுங்கள்:


const supportedLanguages = ["en", "fr", "de", "es", "ja"] as const;

type SupportedLanguage = typeof supportedLanguages[number]; // Type: "en" | "fr" | "de" | "es" | "ja"

function greet(language: SupportedLanguage) {
  switch (language) {
    case "en":
      return "Hello!";
    case "fr":
      return "Bonjour!";
    case "de":
      return "Guten Tag!";
    case "es":
      return "¡Hola!";
    case "ja":
      return "こんにちは!";
    default:
      return "Greeting not available for this language.";
  }
}

வரம்புகள் மற்றும் கவனிக்க வேண்டியவை

கான்ஸ்ட் அசெர்ஷன்களுக்கான மாற்றுகள்

கான்ஸ்ட் அசெர்ஷன்கள் மாற்ற முடியாத தன்மையை அமல்படுத்துவதற்கான ஒரு சக்திவாய்ந்த கருவியாக இருந்தாலும், நீங்கள் கருத்தில் கொள்ளக்கூடிய பிற அணுகுமுறைகளும் உள்ளன:

சிறந்த நடைமுறைகள்

முடிவுரை

டைப்ஸ்கிரிப்ட் கான்ஸ்ட் அசெர்ஷன்கள் உங்கள் குறியீட்டில் மாற்ற முடியாத தன்மையை அமல்படுத்துவதற்கும் டைப் பாதுகாப்பை மேம்படுத்துவதற்கும் ஒரு மதிப்புமிக்க கருவியாகும். as const ஐப் பயன்படுத்துவதன் மூலம், ஒரு மதிப்பிற்கான மிகக் குறுகிய வகையை ஊகிக்கவும், அனைத்துப் பண்புகளையும் readonly எனக் குறிக்கவும் கம்பைலருக்கு அறிவுறுத்தலாம். இது தற்செயலான மாற்றங்களைத் தடுக்கவும், குறியீட்டின் கணிப்புத்திறனை மேம்படுத்தவும், மேலும் துல்லியமான டைப் சரிபார்ப்பைத் திறக்கவும் உதவும். கான்ஸ்ட் அசெர்ஷன்களுக்கு சில வரம்புகள் இருந்தாலும், அவை டைப்ஸ்கிரிப்ட் மொழிக்கு ஒரு சக்திவாய்ந்த সংযোজন மற்றும் உங்கள் பயன்பாடுகளின் வலுவை கணிசமாக மேம்படுத்தும்.

உங்கள் டைப்ஸ்கிரிப்ட் திட்டங்களில் கான்ஸ்ட் அசெர்ஷன்களை உத்தியுடன் இணைப்பதன் மூலம், நீங்கள் மேலும் நம்பகமான, பராமரிக்கக்கூடிய மற்றும் கணிக்கக்கூடிய குறியீட்டை எழுதலாம். மாற்ற முடியாத டைப் இன்ஃபரன்ஸின் சக்தியை ஏற்றுக்கொண்டு, உங்கள் மென்பொருள் மேம்பாட்டு நடைமுறைகளை உயர்த்துங்கள்.