తెలుగు

టైప్‌స్క్రిప్ట్ లిటరల్ టైప్స్‌ను అన్వేషించండి, ఇది కఠినమైన విలువ పరిమితులను అమలు చేయడానికి, కోడ్ స్పష్టతను మెరుగుపరచడానికి మరియు తప్పులను నివారించడానికి ఉపయోగపడే ఒక శక్తివంతమైన ఫీచర్.

టైప్‌స్క్రిప్ట్ లిటరల్ టైప్స్: కచ్చితమైన విలువ పరిమితులను నేర్చుకోవడం

జావాస్క్రిప్ట్ యొక్క సూపర్‌సెట్ అయిన టైప్‌స్క్రిప్ట్, వెబ్ డెవలప్‌మెంట్ యొక్క డైనమిక్ ప్రపంచానికి స్టాటిక్ టైపింగ్‌ను అందిస్తుంది. దీని అత్యంత శక్తివంతమైన ఫీచర్లలో ఒకటి లిటరల్ టైప్స్ అనే భావన. లిటరల్ టైప్స్ ఒక వేరియబుల్ లేదా ప్రాపర్టీ కలిగి ఉండే కచ్చితమైన విలువను పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తాయి, ఇది మెరుగైన టైప్ సేఫ్టీని అందిస్తుంది మరియు ఊహించని తప్పులను నివారిస్తుంది. ఈ ఆర్టికల్ లిటరల్ టైప్స్‌ను లోతుగా అన్వేషిస్తుంది, వాటి సింటాక్స్, వినియోగం మరియు ప్రయోజనాలను ఆచరణాత్మక ఉదాహరణలతో వివరిస్తుంది.

లిటరల్ టైప్స్ అంటే ఏమిటి?

string, number, లేదా boolean వంటి సాంప్రదాయ టైప్స్ లాగా కాకుండా, లిటరల్ టైప్స్ విస్తృత శ్రేణి విలువలను సూచించవు. బదులుగా, అవి నిర్దిష్ట, స్థిరమైన విలువలను సూచిస్తాయి. టైప్‌స్క్రిప్ట్ మూడు రకాల లిటరల్ టైప్స్‌కు మద్దతు ఇస్తుంది:

లిటరల్ టైప్స్‌ను ఉపయోగించడం ద్వారా, మీరు మీ డేటా యొక్క వాస్తవ పరిమితులను ప్రతిబింబించే మరింత కచ్చితమైన టైప్ డెఫినిషన్లను సృష్టించవచ్చు, ఇది మరింత పటిష్టమైన మరియు నిర్వహించదగిన కోడ్‌కు దారితీస్తుంది.

స్ట్రింగ్ లిటరల్ టైప్స్

స్ట్రింగ్ లిటరల్ టైప్స్ అనేవి సాధారణంగా ఉపయోగించే లిటరల్ రకం. ఇవి ఒక వేరియబుల్ లేదా ప్రాపర్టీ ముందుగా నిర్వచించిన స్ట్రింగ్ విలువలలో ఒకదాన్ని మాత్రమే కలిగి ఉండాలని పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తాయి.

ప్రాథమిక సింటాక్స్

స్ట్రింగ్ లిటరల్ టైప్‌ను నిర్వచించడానికి సింటాక్స్ చాలా సులభం:


type AllowedValues = "value1" | "value2" | "value3";

ఇది AllowedValues అనే టైప్‌ను నిర్వచిస్తుంది, ఇది కేవలం "value1", "value2", లేదా "value3" అనే స్ట్రింగ్‌లను మాత్రమే కలిగి ఉంటుంది.

ఆచరణాత్మక ఉదాహరణలు

1. రంగుల పాలెట్‌ను నిర్వచించడం:

మీరు ఒక UI లైబ్రరీని నిర్మిస్తున్నారని మరియు వినియోగదారులు ముందుగా నిర్వచించిన పాలెట్ నుండి మాత్రమే రంగులను పేర్కొనగలరని నిర్ధారించుకోవాలనుకుంటున్నారని ఊహించుకోండి:


type Color = "red" | "green" | "blue" | "yellow";

function paintElement(element: HTMLElement, color: Color) {
  element.style.backgroundColor = color;
}

paintElement(document.getElementById("myElement")!, "red"); // చెల్లుతుంది
paintElement(document.getElementById("myElement")!, "purple"); // లోపం: '"purple"' రకం యొక్క ఆర్గ్యుమెంట్ 'Color' రకం యొక్క పారామీటర్‌కు కేటాయించబడదు.

ఈ ఉదాహరణ, స్ట్రింగ్ లిటరల్ టైప్స్ ఎలా అనుమతించబడిన విలువల యొక్క కఠినమైన సమితిని అమలు చేయగలవో చూపిస్తుంది, ఇది డెవలపర్లు అనుకోకుండా చెల్లని రంగులను ఉపయోగించకుండా నివారిస్తుంది.

2. API ఎండ్‌పాయింట్‌లను నిర్వచించడం:

APIలతో పనిచేసేటప్పుడు, మీరు తరచుగా అనుమతించబడిన ఎండ్‌పాయింట్‌లను పేర్కొనవలసి ఉంటుంది. స్ట్రింగ్ లిటరల్ టైప్స్ దీనిని అమలు చేయడంలో సహాయపడతాయి:


type APIEndpoint = "/users" | "/posts" | "/comments";

function fetchData(endpoint: APIEndpoint) {
  // ... నిర్దిష్ట ఎండ్‌పాయింట్ నుండి డేటాను ఫెచ్ చేయడానికి ఇంప్లిమెంటేషన్
  console.log(`Fetching data from ${endpoint}`);
}

fetchData("/users"); // చెల్లుతుంది
fetchData("/products"); // లోపం: '"/products"' రకం యొక్క ఆర్గ్యుమెంట్ 'APIEndpoint' రకం యొక్క పారామీటర్‌కు కేటాయించబడదు.

ఈ ఉదాహరణ, fetchData ఫంక్షన్‌ను కేవలం చెల్లుబాటు అయ్యే API ఎండ్‌పాయింట్‌లతో మాత్రమే పిలవగలరని నిర్ధారిస్తుంది, ఇది టైపోలు లేదా తప్పు ఎండ్‌పాయింట్ పేర్ల వల్ల కలిగే తప్పుల ప్రమాదాన్ని తగ్గిస్తుంది.

3. విభిన్న భాషలను నిర్వహించడం (అంతర్జాతీయీకరణ - i18n):

గ్లోబల్ అప్లికేషన్‌లలో, మీరు విభిన్న భాషలను నిర్వహించవలసి రావచ్చు. మీ అప్లికేషన్ నిర్దిష్ట భాషలకు మాత్రమే మద్దతు ఇస్తుందని నిర్ధారించుకోవడానికి మీరు స్ట్రింగ్ లిటరల్ టైప్స్‌ను ఉపయోగించవచ్చు:


type Language = "en" | "es" | "fr" | "de" | "zh";

function translate(text: string, language: Language): string {
  // ... టెక్స్ట్‌ను నిర్దిష్ట భాషలోకి అనువదించడానికి ఇంప్లిమెంటేషన్
  console.log(`Translating '${text}' to ${language}`);
  return "Translated text"; // ప్లేస్‌హోల్డర్
}

translate("Hello", "en"); // చెల్లుతుంది
translate("Hello", "ja"); // లోపం: '"ja"' రకం యొక్క ఆర్గ్యుమెంట్ 'Language' రకం యొక్క పారామీటర్‌కు కేటాయించబడదు.

ఈ ఉదాహరణ, మీ అప్లికేషన్‌లో మద్దతు ఉన్న భాషలు మాత్రమే ఉపయోగించబడతాయని ఎలా నిర్ధారించుకోవాలో చూపిస్తుంది.

నంబర్ లిటరల్ టైప్స్

నంబర్ లిటరల్ టైప్స్ ఒక వేరియబుల్ లేదా ప్రాపర్టీ కేవలం ఒక నిర్దిష్ట సంఖ్యా విలువను మాత్రమే కలిగి ఉండాలని పేర్కొనడానికి మిమ్మల్ని అనుమతిస్తాయి.

ప్రాథమిక సింటాక్స్

నంబర్ లిటరల్ టైప్‌ను నిర్వచించడానికి సింటాక్స్ స్ట్రింగ్ లిటరల్ టైప్స్ మాదిరిగానే ఉంటుంది:


type StatusCode = 200 | 404 | 500;

ఇది StatusCode అనే టైప్‌ను నిర్వచిస్తుంది, ఇది కేవలం 200, 404, లేదా 500 సంఖ్యలను మాత్రమే కలిగి ఉంటుంది.

ఆచరణాత్మక ఉదాహరణలు

1. HTTP స్టేటస్ కోడ్‌లను నిర్వచించడం:

మీరు HTTP స్టేటస్ కోడ్‌లను సూచించడానికి నంబర్ లిటరల్ టైప్స్‌ను ఉపయోగించవచ్చు, ఇది మీ అప్లికేషన్‌లో చెల్లుబాటు అయ్యే కోడ్‌లు మాత్రమే ఉపయోగించబడతాయని నిర్ధారిస్తుంది:


type HTTPStatus = 200 | 400 | 401 | 403 | 404 | 500;

function handleResponse(status: HTTPStatus) {
  switch (status) {
    case 200:
      console.log("Success!");
      break;
    case 400:
      console.log("Bad Request");
      break;
    // ... ఇతర కేసులు
    default:
      console.log("Unknown Status");
  }
}

handleResponse(200); // చెల్లుతుంది
handleResponse(600); // లోపం: '600' రకం యొక్క ఆర్గ్యుమెంట్ 'HTTPStatus' రకం యొక్క పారామీటర్‌కు కేటాయించబడదు.

ఈ ఉదాహరణ చెల్లుబాటు అయ్యే HTTP స్టేటస్ కోడ్‌ల వినియోగాన్ని అమలు చేస్తుంది, తప్పు లేదా ప్రామాణికం కాని కోడ్‌లను ఉపయోగించడం వల్ల కలిగే తప్పులను నివారిస్తుంది.

2. స్థిరమైన ఎంపికలను సూచించడం:

ఒక కాన్ఫిగరేషన్ ఆబ్జెక్ట్‌లో స్థిరమైన ఎంపికలను సూచించడానికి మీరు నంబర్ లిటరల్ టైప్స్‌ను ఉపయోగించవచ్చు:


type RetryAttempts = 1 | 3 | 5;

interface Config {
  retryAttempts: RetryAttempts;
}

const config1: Config = { retryAttempts: 3 }; // చెల్లుతుంది
const config2: Config = { retryAttempts: 7 }; // లోపం: '{ retryAttempts: 7; }' రకం 'Config' రకానికి కేటాయించబడదు.

ఈ ఉదాహరణ retryAttempts కోసం సాధ్యమయ్యే విలువలను ఒక నిర్దిష్ట సమితికి పరిమితం చేస్తుంది, ఇది మీ కాన్ఫిగరేషన్ యొక్క స్పష్టత మరియు విశ్వసనీయతను మెరుగుపరుస్తుంది.

బూలియన్ లిటరల్ టైప్స్

బూలియన్ లిటరల్ టైప్స్ నిర్దిష్ట true లేదా false విలువలను సూచిస్తాయి. ఇవి స్ట్రింగ్ లేదా నంబర్ లిటరల్ టైప్స్ కంటే తక్కువ బహుముఖంగా అనిపించినప్పటికీ, నిర్దిష్ట సందర్భాలలో ఉపయోగకరంగా ఉంటాయి.

ప్రాథమిక సింటాక్స్

బూలియన్ లిటరల్ టైప్‌ను నిర్వచించడానికి సింటాక్స్:


type IsEnabled = true | false;

అయితే, నేరుగా true | false ఉపయోగించడం అనవసరం ఎందుకంటే ఇది boolean టైప్‌కు సమానం. బూలియన్ లిటరల్ టైప్స్ ఇతర టైప్స్‌తో కలిపినప్పుడు లేదా కండిషనల్ టైప్స్‌లో మరింత ఉపయోగకరంగా ఉంటాయి.

ఆచరణాత్మక ఉదాహరణలు

1. కాన్ఫిగరేషన్‌తో కండిషనల్ లాజిక్:

ఒక కాన్ఫిగరేషన్ ఫ్లాగ్ ఆధారంగా ఫంక్షన్ యొక్క ప్రవర్తనను నియంత్రించడానికి మీరు బూలియన్ లిటరల్ టైప్స్‌ను ఉపయోగించవచ్చు:


interface FeatureFlags {
  darkMode: boolean;
  newUserFlow: boolean;
}

function initializeApp(flags: FeatureFlags) {
  if (flags.darkMode) {
    // డార్క్ మోడ్‌ను ప్రారంభించు
    console.log("Enabling dark mode...");
  } else {
    // లైట్ మోడ్‌ను ఉపయోగించు
    console.log("Using light mode...");
  }

  if (flags.newUserFlow) {
    // కొత్త యూజర్ ఫ్లోను ప్రారంభించు
    console.log("Enabling new user flow...");
  } else {
    // పాత యూజర్ ఫ్లోను ఉపయోగించు
    console.log("Using old user flow...");
  }
}

initializeApp({ darkMode: true, newUserFlow: false });

ఈ ఉదాహరణ ప్రామాణిక boolean టైప్‌ను ఉపయోగిస్తున్నప్పటికీ, మరింత సంక్లిష్టమైన ప్రవర్తనను సృష్టించడానికి మీరు దీనిని కండిషనల్ టైప్స్‌తో (తరువాత వివరించబడింది) కలపవచ్చు.

2. డిస్క్రిమినేటెడ్ యూనియన్లు:

బూలియన్ లిటరల్ టైప్స్‌ను యూనియన్ టైప్స్‌లో డిస్క్రిమినేటర్లుగా ఉపయోగించవచ్చు. కింది ఉదాహరణను పరిగణించండి:


interface SuccessResult {
  success: true;
  data: any;
}

interface ErrorResult {
  success: false;
  error: string;
}

type Result = SuccessResult | ErrorResult;

function processResult(result: Result) {
  if (result.success) {
    console.log("Success:", result.data);
  } else {
    console.error("Error:", result.error);
  }
}

processResult({ success: true, data: { name: "John" } });
processResult({ success: false, error: "Failed to fetch data" });

ఇక్కడ, success ప్రాపర్టీ, ఇది ఒక బూలియన్ లిటరల్ టైప్, ఒక డిస్క్రిమినేటర్‌గా పనిచేస్తుంది, ఇది if స్టేట్‌మెంట్‌లో result యొక్క టైప్‌ను టైప్‌స్క్రిప్ట్ తగ్గించడానికి అనుమతిస్తుంది.

యూనియన్ టైప్స్‌తో లిటరల్ టైప్స్‌ను కలపడం

లిటరల్ టైప్స్‌ను యూనియన్ టైప్స్‌తో (| ఆపరేటర్‌ను ఉపయోగించి) కలిపినప్పుడు అవి చాలా శక్తివంతంగా ఉంటాయి. ఇది అనేక నిర్దిష్ట విలువలలో ఒకదాన్ని కలిగి ఉండే టైప్‌ను నిర్వచించడానికి మిమ్మల్ని అనుమతిస్తుంది.

ఆచరణాత్మక ఉదాహరణలు

1. స్టేటస్ టైప్‌ను నిర్వచించడం:


type Status = "pending" | "in progress" | "completed" | "failed";

interface Task {
  id: number;
  description: string;
  status: Status;
}

const task1: Task = { id: 1, description: "Implement login", status: "in progress" }; // చెల్లుతుంది
const task2: Task = { id: 2, description: "Implement logout", status: "done" };       // లోపం: '{ id: number; description: string; status: string; }' రకం 'Task' రకానికి కేటాయించబడదు.

ఈ ఉదాహరణ ఒక Task ఆబ్జెక్ట్ కోసం అనుమతించబడిన స్టేటస్ విలువల యొక్క నిర్దిష్ట సమితిని ఎలా అమలు చేయాలో చూపిస్తుంది.

2. డివైస్ టైప్‌ను నిర్వచించడం:

ఒక మొబైల్ అప్లికేషన్‌లో, మీరు విభిన్న డివైస్ టైప్స్‌ను నిర్వహించవలసి రావచ్చు. వీటిని సూచించడానికి మీరు స్ట్రింగ్ లిటరల్ టైప్స్ యొక్క యూనియన్‌ను ఉపయోగించవచ్చు:


type DeviceType = "mobile" | "tablet" | "desktop";

function logDeviceType(device: DeviceType) {
  console.log(`Device type: ${device}`);
}

logDeviceType("mobile"); // చెల్లుతుంది
logDeviceType("smartwatch"); // లోపం: '"smartwatch"' రకం యొక్క ఆర్గ్యుమెంట్ 'DeviceType' రకం యొక్క పారామీటర్‌కు కేటాయించబడదు.

ఈ ఉదాహరణ, logDeviceType ఫంక్షన్‌ను చెల్లుబాటు అయ్యే డివైస్ టైప్స్‌తో మాత్రమే పిలవగలరని నిర్ధారిస్తుంది.

టైప్ అలియాస్‌లతో లిటరల్ టైప్స్

టైప్ అలియాస్‌లు (type కీవర్డ్‌ను ఉపయోగించి) ఒక లిటరల్ టైప్‌కు పేరు ఇవ్వడానికి ఒక మార్గాన్ని అందిస్తాయి, ఇది మీ కోడ్‌ను మరింత చదవగలిగేలా మరియు నిర్వహించగలిగేలా చేస్తుంది.

ఆచరణాత్మక ఉదాహరణలు

1. కరెన్సీ కోడ్ టైప్‌ను నిర్వచించడం:


type CurrencyCode = "USD" | "EUR" | "GBP" | "JPY";

function formatCurrency(amount: number, currency: CurrencyCode): string {
  // ... కరెన్సీ కోడ్ ఆధారంగా మొత్తాన్ని ఫార్మాట్ చేయడానికి ఇంప్లిమెంటేషన్
  console.log(`Formatting ${amount} in ${currency}`);
  return "Formatted amount"; // ప్లేస్‌హోల్డర్
}

formatCurrency(100, "USD"); // చెల్లుతుంది
formatCurrency(200, "CAD"); // లోపం: '"CAD"' రకం యొక్క ఆర్గ్యుమెంట్ 'CurrencyCode' రకం యొక్క పారామీటర్‌కు కేటాయించబడదు.

ఈ ఉదాహరణ, కరెన్సీ కోడ్‌ల సమితి కోసం ఒక CurrencyCode టైప్ అలియాస్‌ను నిర్వచిస్తుంది, ఇది formatCurrency ఫంక్షన్ యొక్క చదవగలిగేతనాన్ని మెరుగుపరుస్తుంది.

2. వారంలోని రోజు టైప్‌ను నిర్వచించడం:


type DayOfWeek = "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" | "Saturday" | "Sunday";

function isWeekend(day: DayOfWeek): boolean {
  return day === "Saturday" || day === "Sunday";
}

console.log(isWeekend("Monday"));   // false
console.log(isWeekend("Saturday")); // true
console.log(isWeekend("Funday"));   // లోపం: '"Funday"' రకం యొక్క ఆర్గ్యుమెంట్ 'DayOfWeek' రకం యొక్క పారామీటర్‌కు కేటాయించబడదు.

లిటరల్ ఇన్ఫరెన్స్

టైప్‌స్క్రిప్ట్ తరచుగా మీరు వేరియబుల్స్‌కు కేటాయించే విలువల ఆధారంగా లిటరల్ టైప్స్‌ను స్వయంచాలకంగా ఊహించగలదు. ఇది const వేరియబుల్స్‌తో పనిచేసేటప్పుడు ప్రత్యేకంగా ఉపయోగపడుతుంది.

ఆచరణాత్మక ఉదాహరణలు

1. స్ట్రింగ్ లిటరల్ టైప్స్‌ను ఊహించడం:


const apiKey = "your-api-key"; // టైప్‌స్క్రిప్ట్ apiKey యొక్క టైప్‌ను "your-api-key"గా ఊహిస్తుంది

function validateApiKey(key: "your-api-key") {
  return key === "your-api-key";
}

console.log(validateApiKey(apiKey)); // true

const anotherKey = "invalid-key";
console.log(validateApiKey(anotherKey)); // లోపం: 'string' రకం యొక్క ఆర్గ్యుమెంట్ '"your-api-key"' రకం యొక్క పారామీటర్‌కు కేటాయించబడదు.

ఈ ఉదాహరణలో, టైప్‌స్క్రిప్ట్ apiKey యొక్క టైప్‌ను స్ట్రింగ్ లిటరల్ టైప్ "your-api-key"గా ఊహిస్తుంది. అయితే, మీరు ఒక స్థిరంగా లేని విలువను ఒక వేరియబుల్‌కు కేటాయిస్తే, టైప్‌స్క్రిప్ట్ సాధారణంగా విస్తృత string టైప్‌ను ఊహిస్తుంది.

2. నంబర్ లిటరల్ టైప్స్‌ను ఊహించడం:


const port = 8080; // టైప్‌స్క్రిప్ట్ port యొక్క టైప్‌ను 8080గా ఊహిస్తుంది

function startServer(portNumber: 8080) {
  console.log(`Starting server on port ${portNumber}`);
}

startServer(port); // చెల్లుతుంది

const anotherPort = 3000;
startServer(anotherPort); // లోపం: 'number' రకం యొక్క ఆర్గ్యుమెంట్ '8080' రకం యొక్క పారామీటర్‌కు కేటాయించబడదు.

కండిషనల్ టైప్స్‌తో లిటరల్ టైప్స్‌ను ఉపయోగించడం

లిటరల్ టైప్స్‌ను కండిషనల్ టైప్స్‌తో కలిపినప్పుడు అవి మరింత శక్తివంతంగా మారతాయి. కండిషనల్ టైప్స్ ఇతర టైప్స్‌పై ఆధారపడే టైప్స్‌ను నిర్వచించడానికి మిమ్మల్ని అనుమతిస్తాయి, ఇది చాలా ఫ్లెక్సిబుల్ మరియు వ్యక్తీకరణ టైప్ సిస్టమ్‌లను సృష్టిస్తుంది.

ప్రాథమిక సింటాక్స్

ఒక కండిషనల్ టైప్ యొక్క సింటాక్స్:


TypeA extends TypeB ? TypeC : TypeD

దీని అర్థం: ఒకవేళ TypeA, TypeBకు కేటాయించగలిగితే, ఫలిత టైప్ TypeC అవుతుంది; లేకపోతే, ఫలిత టైప్ TypeD అవుతుంది.

ఆచరణాత్మక ఉదాహరణలు

1. స్టేటస్‌ను మెసేజ్‌కు మ్యాప్ చేయడం:


type Status = "pending" | "in progress" | "completed" | "failed";

type StatusMessage = T extends "pending"
  ? "Waiting for action"
  : T extends "in progress"
  ? "Currently processing"
  : T extends "completed"
  ? "Task finished successfully"
  : "An error occurred";

function getStatusMessage(status: T): StatusMessage {
  switch (status) {
    case "pending":
      return "Waiting for action" as StatusMessage;
    case "in progress":
      return "Currently processing" as StatusMessage;
    case "completed":
      return "Task finished successfully" as StatusMessage;
    case "failed":
      return "An error occurred" as StatusMessage;
    default:
      throw new Error("Invalid status");
  }
}

console.log(getStatusMessage("pending"));    // Waiting for action
console.log(getStatusMessage("in progress")); // Currently processing
console.log(getStatusMessage("completed"));   // Task finished successfully
console.log(getStatusMessage("failed"));      // An error occurred

ఈ ఉదాహరణ, ప్రతి సాధ్యమయ్యే స్టేటస్‌ను సంబంధిత మెసేజ్‌కు కండిషనల్ టైప్స్‌ను ఉపయోగించి మ్యాప్ చేసే ఒక StatusMessage టైప్‌ను నిర్వచిస్తుంది. getStatusMessage ఫంక్షన్ ఈ టైప్‌ను ఉపయోగించి టైప్-సేఫ్ స్టేటస్ మెసేజ్‌లను అందిస్తుంది.

2. టైప్-సేఫ్ ఈవెంట్ హ్యాండ్లర్‌ను సృష్టించడం:


type EventType = "click" | "mouseover" | "keydown";

type EventData = T extends "click"
  ? { x: number; y: number; } // క్లిక్ ఈవెంట్ డేటా
  : T extends "mouseover"
  ? { target: HTMLElement; }   // మౌస్‌ఓవర్ ఈవెంట్ డేటా
  : { key: string; }             // కీడౌన్ ఈవెంట్ డేటా

function handleEvent(type: T, data: EventData) {
  console.log(`Handling event type ${type} with data:`, data);
}

handleEvent("click", { x: 10, y: 20 }); // చెల్లుతుంది
handleEvent("mouseover", { target: document.getElementById("myElement")! }); // చెల్లుతుంది
handleEvent("keydown", { key: "Enter" }); // చెల్లుతుంది

handleEvent("click", { key: "Enter" }); // లోపం: '{ key: string; }' రకం యొక్క ఆర్గ్యుమెంట్ '{ x: number; y: number; }' రకం యొక్క పారామీటర్‌కు కేటాయించబడదు.

ఈ ఉదాహరణ, ఈవెంట్ టైప్ ఆధారంగా విభిన్న డేటా నిర్మాణాలను నిర్వచించే ఒక EventData టైప్‌ను సృష్టిస్తుంది. ఇది ప్రతి ఈవెంట్ టైప్‌కు సరైన డేటాను handleEvent ఫంక్షన్‌కు పంపగలరని నిర్ధారించడానికి మిమ్మల్ని అనుమతిస్తుంది.

లిటరల్ టైప్స్‌ను ఉపయోగించడానికి ఉత్తమ పద్ధతులు

మీ టైప్‌స్క్రిప్ట్ ప్రాజెక్ట్‌లలో లిటరల్ టైప్స్‌ను సమర్థవంతంగా ఉపయోగించడానికి, కింది ఉత్తమ పద్ధతులను పరిగణించండి:

లిటరల్ టైప్స్‌ను ఉపయోగించడం వల్ల కలిగే ప్రయోజనాలు

ముగింపు

టైప్‌స్క్రిప్ట్ లిటరల్ టైప్స్ అనేవి కఠినమైన విలువ పరిమితులను అమలు చేయడానికి, కోడ్ స్పష్టతను మెరుగుపరచడానికి మరియు తప్పులను నివారించడానికి మిమ్మల్ని అనుమతించే ఒక శక్తివంతమైన ఫీచర్. వాటి సింటాక్స్, వినియోగం మరియు ప్రయోజనాలను అర్థం చేసుకోవడం ద్వారా, మీరు మరింత పటిష్టమైన మరియు నిర్వహించదగిన టైప్‌స్క్రిప్ట్ అప్లికేషన్‌లను సృష్టించడానికి లిటరల్ టైప్స్‌ను ఉపయోగించుకోవచ్చు. రంగుల పాలెట్‌లు మరియు API ఎండ్‌పాయింట్‌లను నిర్వచించడం నుండి విభిన్న భాషలను నిర్వహించడం మరియు టైప్-సేఫ్ ఈవెంట్ హ్యాండ్లర్‌లను సృష్టించడం వరకు, లిటరల్ టైప్స్ మీ డెవలప్‌మెంట్ వర్క్‌ఫ్లోను గణనీయంగా మెరుగుపరచగల అనేక ఆచరణాత్మక అప్లికేషన్‌లను అందిస్తాయి.